版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1.1 C+面向?qū)ο蟪绦蛟O(shè)計(jì)教程課后題答案什么是面向?qū)ο蟪绦蛟O(shè)計(jì)?面向?qū)ο蟪绦蛟O(shè)計(jì)是一種新的程序設(shè)計(jì)范型.這種范型的主要特征是:程序=對象+消息面向?qū)ο蟪绦虻幕驹厥菍ο蟆V饕Y(jié)構(gòu)特點(diǎn)是:第一,程序一般由類的定義和類的使用兩部分組成;第二,程序中的一切操作都是通過向?qū)ο蟀l(fā)送消息來實(shí)現(xiàn)的。1.2 什么是對象?什么是類?對象與類之間的關(guān)系是什么?對象是描述其屬性的數(shù)據(jù)以及對這些數(shù)據(jù)施加的一組操作封裝在一起構(gòu)成的統(tǒng)一體。類就是具有相同的數(shù)據(jù)和相同的操作的一組對象的集合,也就是說,類是對具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的一類對象的描述。類和對象之間的關(guān)系是抽象和具體的關(guān)系。類是多個對象進(jìn)行綜合抽象的結(jié)果,
2、一個對象是類的一個實(shí)例。1.3 現(xiàn)實(shí)世界中的對象有哪些特征?請舉例說明?,F(xiàn)實(shí)世界中的對象具有以下特征:1) 每一個對象必須有一個名字以區(qū)別于其他對象;用屬性來描述對象的某些特征;有一組操作,每組操作決定對象的一種行為;對象的行為可以分為兩類:一類是作用于自身的行為,另一類是作用于其他對象的行為。例如一個教師是一個對象。每個教師對象有自己的名字來和別的教師區(qū)別。教師具有編號,姓名,年齡,職稱,專業(yè)等屬性。教師擁有走路,吃飯,授課等行為操作。走路,吃飯是作用于自身的行為,授課是作用于其他對象的行為。1.4 什么是消息?消息具有什么性質(zhì)?一個對象向另一個對象發(fā)出的請求成為“消息”。消息具有以下3個性
3、質(zhì):1) 同一個對象可以接收不同形式的多個消息,做出不同的相應(yīng);相同形式的消息可以傳遞給不同的對象,所做出的響應(yīng)可以是不同的;對消息的響應(yīng)并不是必須的,對象可以響應(yīng)消息,也可以不響應(yīng)。1.5 什么是抽象和封裝?請舉例說明。抽象是將有關(guān)事物的共性歸納、集中的過程。例如:把所有具有大學(xué)生學(xué)籍的人歸為一類,成為“大學(xué)生”,這就是一個抽象。封裝是指把數(shù)據(jù)和實(shí)現(xiàn)操作的代碼集中起來放在對象內(nèi)部,并盡可能隱藏對象的內(nèi)部細(xì)節(jié)。例如:每一臺洗衣機(jī)都有出廠日期、機(jī)器編號等屬性,也有啟動、暫停、選擇等操作。人們在使用洗衣機(jī)的時候只需要按下對應(yīng)的按鈕,而不用關(guān)心具體的內(nèi)部實(shí)現(xiàn)。這就是封裝。1.6 什么是繼承?請舉例說
4、明。繼承就是允許派生類使用基類的數(shù)據(jù)和操作,同時,派生類還可以增加新的操作和數(shù)據(jù)。狗是有犬牙、食肉、1.7 例如:哺乳動物是一種熱血、有毛發(fā)、用奶哺育幼崽的動物;特定的骨骼結(jié)構(gòu)、群居的哺乳動物。狗就繼承了哺乳動物若類之間具有繼承關(guān)系,則他們之間具有什么特征?若類之間具有繼承關(guān)系,則他們之間具有下列幾個特征:1) 類間具有共享特征(包括數(shù)據(jù)和操作代碼的共享);2) 類間具有差別或新增部分(包括非共享的數(shù)據(jù)和操作代碼);3) 類具有層次結(jié)構(gòu)。1.8 什么是單繼承、多繼承?請舉例說明。單繼承是指每個派生類只直接繼承了一個基類的特征。例如狗繼承自哺乳動物。多繼承是指多個基類派生出一個派生類的繼承關(guān)系。
5、比如玩具車同時繼承自玩具和車。1.9 什么是多態(tài)?請舉例說明。多態(tài)是指不同的對象收到相同的消息時執(zhí)行不同的操作。例如,有一個窗口類對象,還有一個棋子類對象。當(dāng)我們發(fā)出“移動”消息時,兩個對象的行為不同。1.10 面向?qū)ο蟪绦蛟O(shè)計(jì)的主要優(yōu)點(diǎn)是什么?1. 可提高程序的重用性;2. 可控制程序的復(fù)雜性;3. 可改善程序的可維護(hù)性;4. 能夠更好地支持大型程序設(shè)計(jì);增強(qiáng)了計(jì)算機(jī)處理信息的范圍;能夠很好地適應(yīng)新的硬件環(huán)境。2.1簡述C+的主要特點(diǎn)。1) C+是C的超集,保持與C的兼容。保持了C的簡潔、高效和接近匯編語言等特點(diǎn),并對C的功能作了不少擴(kuò)充用C+編寫的程序比C更安全,可讀性更好,代碼結(jié)構(gòu)更為合
6、理。2) 程序質(zhì)量高。3) 增加了面向?qū)ο髾C(jī)制。2.2#ineludeusingnamespacestd;intmain()inta,b,d,min;coutab;min=ab?b:a;for(d=2;dmin;d+)if(a%d)=0)&(b%d)=0)break;if(d=min)coutNocommondenominatorsendl;return0;coutThelowestcommondenominatorisdendl;return0;2.3有效2.4沒有函數(shù)聲明;函數(shù)定義沒有寫返回值類型。2.5(1)等價,函數(shù)聲明可以省略參數(shù)的名字。(2)不等價,第二個的函數(shù)定義不能省略參數(shù)的名
7、字2.6-2.10CDAAB2.11-2.15ACBDC2.16-2.17DC2.181012.1910102.201020的不安全性2.21舉例說明可以使用const替代#define以消除#define#includeusingnamespacestd;intmain()inta=1;#defineT1a+a#defineT2T1-T1coutT2isT2endl;return0;上面這個程序,初看應(yīng)該輸出T2is0但是實(shí)際上,得出T2is2如果把#define換成const,則可以輸出想要的結(jié)果。2.22用動態(tài)分配空間的方法,計(jì)算Fibonacci數(shù)列的前20項(xiàng),并存儲到動態(tài)分配的空間中
8、。#includeusingnamespacestd;intmain()int*pi=newint20;*pi=1;pi1=1;for(inti=2;i20;i+)pii=pii-2+pii-1;return0;2.23重載sroot函數(shù),輸出一個數(shù)的二次方根。#ineludeusingnamespacestd;doublesroot(intnum)return(double)sqrt(double)num);doublesroot(longnum)return(double)sqrt(double)num);doublesroot(doublenum)return(double)sqrt(n
9、um);intmain()return0;2.24解決百錢問題。將一元人民幣換成1、2、5分的硬幣,有多少種換法?#includeusingnamespacestd;intmain()intnum=0;/總共換法的總數(shù)。初始化為0for(inti=0;i=100;i+)for(intj=0;j100)break;for(intk=0;k=20;k+)if(i+2*j+5*k)=100)num+;cout1分i個;2分jvv5分k個;100)break;coutnumendl;return0;2.25輸入兩個整數(shù),按由小到大的順序輸出。要求使用變量的引用#includeusingnamespac
10、estd;voidswap(inta=a+b;b=a-b;a=a-b;&a,int&b)intmain()inta,b;cinab;if(ab)swap(a,b);bendl;coutareturn0;2.26用二分法求解f(x)=0的根。#includeusingnamespacestd;doubleFun(doublex)return35*x+25;/假設(shè)f(x)=35x+25intmain()doublea,b;cina;if(Fun(a)=0)coutx=ab;while(Fun(a)*Fun(b)=0);if(Fun(b)=0)coutx=bb)a=a+b;b=a-b;a=a-b;w
11、hile(1)if(Fun(a+b)/2)=0)2endl;coutx=(a+b)/return0;2;b=(a+b)/2)0)if(Fun(b)*Fun(a+b)/a=(a+b)/2;return0;3.1類聲明的一般格式是什么class類名private:私有數(shù)據(jù)成員和成員函數(shù)public:公有數(shù)據(jù)成員和成員函數(shù)3.2構(gòu)造函數(shù)和析構(gòu)函數(shù)的主要作用是什么?它們各自有什么特性?構(gòu)造函數(shù)是一種特殊的成員函數(shù),它主要用于為對象分配空間,進(jìn)行初始化。構(gòu)造函數(shù)的名字必須與類名相同,而不能由用戶任意命名。它可以有任意類型的參數(shù),但不能具有返回值類型。析構(gòu)函數(shù)通常用于執(zhí)行一些清理任務(wù),如釋放分配給對象的內(nèi)
12、存空間等。析構(gòu)函數(shù)名與類名相同,但它前面必須加一個波浪號。不能有返回值,也不能有參數(shù)。所謂對象數(shù)組,是指每一個數(shù)組元素都是對象的數(shù)組。3.4什么是this指針?它的主要作用是什么?C+為成員函數(shù)提供了一個名為this的指針,這個指針稱為自引用指針。每當(dāng)創(chuàng)建一個對象時,系統(tǒng)就把this指針初始化為指向該對象。一個類的所有對象合用一份成員函數(shù),this指針可以幫助對象辨別出當(dāng)前調(diào)用的是自己的那個對象的數(shù)據(jù)成員和函數(shù)。3.5友元函數(shù)有什么作用?友元函數(shù)可以在類的外部訪問類的私有成員或保護(hù)成員。3.6(1)聲明并定義了P2,P3,并用默認(rèn)無參構(gòu)造函數(shù)初始化。(2)聲明并定義了P2,并調(diào)用Point類的
13、拷貝構(gòu)造函數(shù)用P1對P2進(jìn)行初始化(3)聲明并定義了P2,并調(diào)用Point類的拷貝構(gòu)造函數(shù)用P1對P2進(jìn)行初始化(4)調(diào)用拷貝構(gòu)造函數(shù),將P1的成員值賦值給P4的成員。3.7-3.10BCCB3.11-3.15BAABA3.16-3.17BB10,2030,4850,6870,8090,1611,1203.19Constructing10100Destructing3.203objectsinexistence4objectsinexistenceafterallocation3objectsinexistenceafterdeletion3.21Countingat0Countingat9D
14、efaultconstructorcalled.Defaultconstructorcalled.Defaultconstructorcalled.Construcotor:a=1,b=2Construcotor:a=3,b=43.23Construcotor:a=5,b=6Con.Copycon.default.Copycon.3.24A=5B=14A=93.25B=145,722.25ConstructingConstructingA=5B=15A=10B=15DestructingDestructing3.27voidpintStu();函數(shù)只有聲明,沒有定義。age是私有成員,不能用對
15、象直接調(diào)用。3.28Student:voidprintStu()禾口voidsetSno(ints)沒有加限定符voidsetAge(inta)在類中沒有聲明3.29構(gòu)造函數(shù)不能定義為私有。否則無法創(chuàng)建對象。3.30下面是一個計(jì)算器類的定義,請完成該類成員函數(shù)的實(shí)現(xiàn)。classcounterpublic:counter(intnumber);voidincrement();/給原始值加1/給原始值減1/取的計(jì)數(shù)器值/顯示計(jì)數(shù)voiddecrement();intgetvalue();intprint();private:intvalue;;counter:counter(intnumber)v
16、alue=number;voidcounter:increment()+value;voidcounter:decrement()-value;intcounter:getvalue()returnvalue;intcounter:print()coutvalueendl;returnvalue;3.31根據(jù)注釋語句提示,實(shí)現(xiàn)類Date的成員函數(shù)#includeusingnamespacestd;classDatepublic:voidprintDate();voidsetDay(intd);voidsetMonth(intm);voidsetYear(inty);月day日值,分別表示圓柱體
17、的半徑和變量中。在類cylinder中包含privateintday,month,year;voidDate:printDate()cout今天是year年monthendl;voidDate:setDay(intd)day=d;voidDate:setMonth(intm)month=m;voidDate:setYear(inty)year=y;intmain()DatetestDay;testDay.setDay(5);testDay.setMonth(10);testDay.setYear(2003);testDay.printDate();return0;3.32建立類cylinder
18、,cylinder的構(gòu)造函數(shù)被傳遞了兩個double高度。用類cylinder計(jì)算圓柱體的體積,并存儲在一個double一個成員函數(shù)vol,用來顯示每個cylinder對象的體積。constintPI=3.14;classcylinderprivate:doubleradius,height,volume;public:cylinder(intrad,inthei);doublegetVolume();voidvol();;doublecylinder:getVolume()cylinder:cylinder(radius=rad;height=hei;intrad,inthei)volume
19、=PI*radius*radius*height;returnvolume;voidcylinder:vol()cout圓柱體的體積是:volumeendl;3.33構(gòu)建一個類book,其中包含有兩個私有數(shù)據(jù)成員qu和price,將qu初始化為15,將price初始化為qu的10倍,建立一個有5個元素的數(shù)組對象。顯示每個對象數(shù)組元素的qu*price值。classbookprivate:intqu,price;public:book(intqu);intmult();book:book(intq)if(q5)qu=1;elsequ=q;price=10*qu;intbook:mult()ret
20、urnqu*price;intmain()bookbooksfor5=1,2,3,4,5;(inti=0;i5;i+)coutbooksi.mult()3.34修改3.33,通過對象指針訪問對象數(shù)組,使程序以相反的順序顯示每個對象數(shù)組元素的qu*price值。classbookprivate:intqu,price;public:book(intqu);intmult();book:book(if(q5)qu=q;price=10*qu;intbook:mult()returnqu*price;intmain()bookbooks5=1,2,3,4,5;book*p=books;p+=4;fo
21、r(inti=0;i5;i+)coutmult()-P;return0;3.35構(gòu)建一個類Stock,含字符數(shù)組stockcode及整型數(shù)組成員quan、雙精度型數(shù)據(jù)成員price,構(gòu)造函數(shù)含3個參數(shù):字符數(shù)組na及q、p。當(dāng)定義Stock的類對象時,將對象的第一個字符串參數(shù)賦給數(shù)據(jù)成員stockcode,第2和第3個參數(shù)分別賦給quan、price。未設(shè)置第2和第3個參數(shù)時,quan的值為1000,price的值為8.98.成員函數(shù)print沒有形參,需使用this指針,顯示對象數(shù)據(jù)成員的內(nèi)容。編寫程序顯示對象數(shù)據(jù)成員的值。#includeusingnamespacestd;classSto
22、ckprivate:charstockcode25;intquan;doubleprice;public:Stock(charna,intq=1000,doublep=8.98);Stock(charna);voidprint();Stock:Stock(charna,intq=1000,doublep=8.98)strcpy(stockcode,na);quan=q;price=p;voidStock:print()coutstockcode:stockcodequan:quan:price:priceendl;intmain()Stockstock1(600001,3000,5.67);S
23、tockstock2(stock1.print();stock2.print();return0;600002);3.36編寫一個程序,已有若干學(xué)生的數(shù)據(jù),包括學(xué)號、姓名、成績,要求輸出這些學(xué)生的數(shù)據(jù)并計(jì)算出學(xué)生人數(shù)和平均成績(要求將學(xué)生人數(shù)和總成績用靜態(tài)數(shù)據(jù)成員表示)。#includeusingnamespacestd;classstudentprivate:charname25,studentNo10;intscore;staticintsum;staticinttotalScore;public:student(charna,charstuNo,intsc);voidshow();sta
24、ticvoidshowTotal();student:student(charna,charstuNo,intsc)strcpy(name,na);strcpy(studentNo,stuNo);score=sc;+sum;totalScore+=sc;voidstudent:show()cout姓名:nameendl;cout學(xué)號:studentNoendl;cout成績:scoreendl;voidstudent:showTotal()coutcout總?cè)藬?shù):sumendl;平均成績:(double)totalScore/sumendl;intstudent:sum=0;intstuden
25、t:totalScore=0;intmain()students1(張無忌,111254,75);students2(李莫愁,254114,60);students3(小龍女,112587,88);s1.show();s2.show();s3.show();4.1 student:showTotal();return0;有哪幾種繼承方式基類的私有成員,無論哪種繼承方式都不能訪問。公有繼承不改變基類的公有和保護(hù)成員的訪問限制。私有繼承將基類的公有和保護(hù)成員都變成私有。保護(hù)繼承將基類的公有和保護(hù)成員都變成保護(hù)。4.2 派生類能否直接訪問基類的私有成員?若否,應(yīng)如何實(shí)現(xiàn)?不能??梢栽诨惱锾砑右粋€公
26、有成員函數(shù)來訪問私有成員,派生類就能繼承這個公有成員函數(shù),實(shí)現(xiàn)對基類私有成員的訪問。4.3 保護(hù)成員有哪些特性?保護(hù)成員以公有方式或私有方式繼承后的訪問特性如何?保護(hù)成員只能被本類或本類的派生類所訪問,在類或派生類外是不能被訪問的。后面一問見第一題的答案。4.4 派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序是怎樣的?構(gòu)造函數(shù)是先執(zhí)行父類的構(gòu)造函數(shù),再執(zhí)行類中其他類對象的構(gòu)造函數(shù),再執(zhí)行本類的構(gòu)造函數(shù)。如果同級有多個構(gòu)造函數(shù),則按聲明順序執(zhí)行。析構(gòu)函數(shù)與構(gòu)造函數(shù)的執(zhí)行順序剛好相反。4.5 派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的構(gòu)造規(guī)則是怎樣的?派生類名(參數(shù)總表):基類名(參數(shù)總表)派生類新增數(shù)據(jù)成員的初始化語句派生
27、類中的析構(gòu)函數(shù)與基類無關(guān)。4.6 什么是多繼承?多繼承時,構(gòu)造函數(shù)與析構(gòu)函數(shù)的執(zhí)行順序是怎樣的?多繼承是指一個類同時繼承自多個不同的基類。4.7 執(zhí)行順序同4.4在類的派生中為何要引入虛基類?虛基類構(gòu)造函數(shù)的調(diào)用順序是如何規(guī)定的?如果一個類有多個直接基類,而這些直接基類又有一個共同的基類,在訪則在最底層的派生類中會保留這個簡介的共同基類數(shù)據(jù)成員的多份同名成員。問這些同名成員的時候,會產(chǎn)生二義性。為了解決二義性,引入了虛基類。1) 如果虛基類中定義有帶形參的構(gòu)造函數(shù),并且沒有定義默認(rèn)形式的構(gòu)造函數(shù),則整個繼承結(jié)構(gòu)中,所有直接或間接的派生類都必須在構(gòu)造函數(shù)的成員初始化表中列出對虛基類構(gòu)造函數(shù)的調(diào)用
28、,以初始化在虛基類中定義的數(shù)據(jù)成員。2) 建立一個對象時,如果這個對象中含有從虛基類繼承來的成員,則虛基類的成員是由最遠(yuǎn)派生類的構(gòu)造函數(shù)通過調(diào)用虛基類的構(gòu)造函數(shù)進(jìn)行初始化的。該派生類的其他基類對虛基類構(gòu)造函數(shù)的調(diào)用都自動被忽略。3) 若同一層次中同時包含虛基類和非虛基類,應(yīng)先調(diào)用虛基類的構(gòu)造函數(shù),再調(diào)用非虛基類的構(gòu)造函數(shù),最后調(diào)用派生類的構(gòu)造函數(shù)。4.8-4.11ACCB4.12ConstructorB1.ConstructorB2.ConstructorA.4.134.144.1521主食=bread副食=steak0,0,00,1,03,6,9ConstructorB1.Construct
29、orB2.ConstructorB3.ConstructorA.124,34.164.17(1,2)5,6(6,9)4.18classbaselclassbase2classIevel2classbase2classlevellclasstoplevel4.19#includeusingnamespacestd;#includeclasstablepublic:table(intp,intq)i=p;j=q;voidascii(void);protected:inti,j;voidtable:ascii()intk=1;for(;i=j;i+)coutsetw(4)iif(k)%12=0)co
30、utn;k+;coutn;(char)i;classder_table:publictablepublic:der_table(intp,intq,lc=m;voidprint();protected:char*c;char*m):table(p,q);voidder_table:print()coutctable:ascii();n;intmain()der_tableob(ob.print();return0;a,zASCIIvalue-char);4.20#ineludeusingnamespacestd;#ineludeclassarea_e1protected:doubleheigh
31、t;doublewidth;public:area_e1(doubler,doubles)height=r;width=s;virtualdoublearea()=0;area_c1doubles):area_c1(r,s)classrectangle:publicpublic:rectangle(doubler,virtualdoublearea();doublerectangle:area()Ireturnheight*width;publicclassisosceles:IIpublic:jisosceles(doubler,Ivirtualdoublearea();area_c1dou
32、bles):area_c1(r,s);oubleisosceles:area()intreturn(height*width)/main()2;出isoscelesi(4,6);area_c1*a;a=&r;coutvv矩形的面積是:area()endl;a=&;cout三角形的面積是:area()endl;return0;4.21#includeusingnamespacestd;#includeclassTimepublic:Time(inth,intm,ints)hours=h;minutes=m;seconds=s;voiddisplay()cout出生時間:hours時minutes
33、分seconds秒endl;protected:inthours,minutes,seconds;classDatepublic:Date(intm,intd,inty)month=m;day=d;year=y;IJvoiddisplay。cout出生年月:year年month月day日endl;protected:intmonth,day,year;;classBirthtime:publicTime,public:Birthtime(charname,intTime(h,mi,s),Date(m,d,y)strcpy(Childname,name);voidshowName()cout我的
34、名字是:private:charChildname25;intmain()Birthtimeb(xiaoming,3,b.showName();b.Time:display();b.Date:display();return0;publicDatem,intd,inty,inth,intmi,ints):Childnameendl;6,2012,11,12,42);4.22#includeusingnamespacestd;#includeclasspersonprotected:charnumber25;charname25;public:person(charnum,charna)strc
35、py(number,num);strcpy(name,na);voidshowName()cout編號:number姓名:name;classstudent:publicpersonprivate:intclassNumber,score;public:student(charnum,charna,intcNumber,intsc):person(num,na)classNumber=cNumber;score=sc;voidshow()showName();cout;班號:classNumber成績:scoreendl;classteacher:publicpersonprivate:cha
36、rtitle25,department25;public:teacher(charnum,charna,chartit,chardepart):person(num,na)strcpy(title,tit);strcpy(department,depart);voidshow()showName();cout職稱:title部部H:departmentendl;C+第五章習(xí)題1.什么是靜態(tài)聯(lián)編?什么是動態(tài)聯(lián)編?靜態(tài)聯(lián)編是指系統(tǒng)在編譯時就決定如何實(shí)現(xiàn)某一動作。動態(tài)聯(lián)編是指系統(tǒng)在運(yùn)行時動態(tài)實(shí)現(xiàn)某一動作。1.編譯時的多態(tài)性與運(yùn)行時的多態(tài)性有什么區(qū)別?他們的實(shí)現(xiàn)方式有什么不同?靜態(tài)聯(lián)編支持的多態(tài)性稱為
37、編譯時多態(tài)性,也稱靜態(tài)多態(tài)性。編譯時多態(tài)性是通過函數(shù)重載和模板實(shí)現(xiàn)的。動態(tài)聯(lián)編所支持的多態(tài)性稱為運(yùn)行時多態(tài)性,也稱動態(tài)多態(tài)性。是通過虛函數(shù)來實(shí)現(xiàn)的。1.簡述運(yùn)算符重載規(guī)則。a) C+中絕大部分的運(yùn)算符允許重載。b) C+只能對已有的C+運(yùn)算符進(jìn)行重載。c) 運(yùn)算符重載是針對新類型數(shù)據(jù)的實(shí)際需要,對原有運(yùn)算符進(jìn)行適當(dāng)?shù)母脑焱瓿?。?yīng)與原有的功能相類似。d) 重載不能改變運(yùn)算符的操作對象的個數(shù)。e) 重載不能改變運(yùn)算符原有的優(yōu)先級。f) 不能改變原有的結(jié)合特性。g) 參數(shù)至少應(yīng)有一個是類對象。h) 重載函數(shù)可以是普通函數(shù),也可以是類的成員函數(shù),也可以是類的友元函數(shù)。i) 一般用于類對象的運(yùn)算符除了賦
38、值運(yùn)算符都要重載。1.友元運(yùn)算符函數(shù)和成員運(yùn)算符函數(shù)有什么不同?a) 對于雙目運(yùn)算符,成員運(yùn)算符重載含有一個參數(shù),友元重載含有兩個參數(shù);對于單目運(yùn)算符,成員重載沒有參數(shù),友元重載有一個參數(shù)。雙目運(yùn)算符一般可以被重載為友元或成員。但是如果將一個對象和一個普通類型運(yùn)算,必須重載為友元。b) 調(diào)用方式不同。c) 一般,雙目運(yùn)算符用友元,單目運(yùn)算符用成員。如果操作數(shù)有隱式類型轉(zhuǎn)換,則必須用友元。1.什么是虛函數(shù)?虛函數(shù)與函數(shù)重載有哪些相同點(diǎn)與不同點(diǎn)?虛函數(shù)就是在基類中被關(guān)鍵字virtual說明,并在派生類中重新定義的函數(shù)。函數(shù)名都相同。重載函數(shù)的參數(shù)個數(shù)或參數(shù)類型必須有所不同。虛函數(shù)要求函數(shù)名,返回類
39、型,參數(shù)個數(shù),參數(shù)的類型和順序與基類中的虛函數(shù)原型完全相同。1.什么是純虛函數(shù)?什么是抽象類?純虛函數(shù)是一個在基類中說明的虛函數(shù),它在該基類中沒有定義,但要求在它的派生類中根據(jù)需要對它進(jìn)行定義,或仍說明為純虛函數(shù)。如果一個類至少有一個純虛函數(shù),那么就稱這個類為抽象類。7-12DAADCC13.不對,參數(shù)個數(shù)必須一樣14.7615.Thisisc+book.第一個字符:T第16個字符:.第26個字符:數(shù)組下標(biāo)超界!16.m=1.5千米17.#ineludeusingnamespacestd;classtwoDArrayinta23;public:twoDArray()for(inti=0;i2;
40、i+)for(intj=0;j3;j+)5;aij=twoDArray(intb3)for(inti=0;i2;i+)for(intj=0;j3;j+)aij=bij;voidshow();twoDArrayoperator+(twoDArrayn);twoDArrayoperator-(twoDArrayn);voidtwoDArray:show()for(inti=0;i2;i+)for(intj=0;j3;j+)coutaij;coutendl;twoDArraytwoDArray:operator+(twoDArrayn)twoDArraytemp;for(inti=0;i2;i+)f
41、or(intj=0;j3;j+)temp.aij=aij+n.aij;returntemp;twoDArraytwoDArray:operator-(twoDArrayn)twoDArraytemp;for(inti=0;i2;i+)for(intj=0;j3;j+)temp.aij=aij-n.aij;returntemp;intmain()inta23;for(inti=0;ifor2;i+)(intj=0;jaij;twoDArraya1,a2(a),total,sub;total=a1+a2;sub=a1-a2;total.show();sub.show();return0;18.#i
42、ncludeusingnamespacestd;classtwoDArrayinta23;public:twoDArray()for(inti=for(intaij=0;i2;i+)j=0;j3;j+)5;twoDArray(intb3)for(inti=for(intaij=bij;0;i2;i+)j=0;j3;j+)voidshow();friendtwoDArrayfriendtwoDArray;voidtwoDArray:show()for(inti=0;ioperator+(twoDArraym,twoDArrayn);operator-(twoDArraym,twoDArrayn)
43、;2;i+)for(intj=0;j3;j+)coutaij;coutendl;jtwoDArrayoperator+(twoDArraym,twoDArrayn)twoDArraytemp;for(inti=0;i2;i+)for(intj=0;j3;j+)temp.aij=m.aij+n.aij;returntemp;twoDArrayoperator-(twoDArraym,twoDArrayn)twoDArraytemp;for(inti=0;i2;i+)for(intj=0;j3;j+)temp.aij=m.aij-n.aij;returntemp;intmain()inta23;f
44、or(inti=0;i2;i+)for(intj=0;jaij;twoDArraya1,a2(a),total,sub;total=a1+a2;sub=a1-a2;total.show();sub.show();return0;19.#includeusingnamespacestd;classcomplexdoublereal,imag;public:complex(doublere,doubleim)real=re;imag=im;friendcomplexoperator+(complexa,complexb);voidprint();complexoperator+(complexa,
45、complexb)returncomplex(a.real+b.real,a.imag+b.imag);voidcomplex:print()cout(real,imag)endl;intmain()complexc1(2.5,3.7);complexc2(4.2,6.5);complextotal=cl+c2;total.print();return0;20.#includeusingnamespacestd;constdoublePI=3.14;classContainerprotected:r為底面doubler,d;/如果是球形,r是半徑,d為0.如果是圓柱體,半徑,d為高。如果是正方
46、體,r為邊長,d為0。public:Container(doublea,doubleb=0)r=a;d=b;virtualdoubleserface()=0;/計(jì)算表面積virtual;doublevolume()=0;/計(jì)算體積classSphere:publicContainerpublic:Sphere(doubler):Container(r)doubleserface();doublevolume();doubleSphere:serface()return4*PI*r*r;doubleSphere:volume()returnPI*r*r*r;classCylinder:publi
47、cContainerpublic:Cylinder(doublea,doubleb):Container(a,b)doubleserface();doublevolume();doubleCylinder:serface()return2*PI*r*d+PI*r*r;doubleCylinder:volume()returnPI*r*r*d;classCube:publicContainerpublic:Cube(doublea):Container(a)doubleserface();doublevolume();doubleCube:serface()return6*r*r;doubleC
48、ube:volume()returnr*r*r;7.1C+為什么要有自己的輸入輸出系統(tǒng)?C+的編譯系統(tǒng)對數(shù)據(jù)類型進(jìn)行嚴(yán)格的檢查,凡是類型不正確的數(shù)據(jù)都不可能通過編譯。C+中需要定義眾多的用戶自定義類型且能夠輸入輸出。7.2C+有哪4個預(yù)定義的流對象?他們分別與什么具體設(shè)備相關(guān)聯(lián)?標(biāo)準(zhǔn)輸入流對象cin、標(biāo)準(zhǔn)輸出流對象cout、非緩沖型的標(biāo)準(zhǔn)出錯流對象cerr和緩沖型的標(biāo)準(zhǔn)出錯流對象clog。cin對應(yīng)標(biāo)準(zhǔn)輸入設(shè)備cout對應(yīng)標(biāo)準(zhǔn)輸出設(shè)備cerr對應(yīng)標(biāo)準(zhǔn)錯誤輸出設(shè)備clog對應(yīng)標(biāo)準(zhǔn)錯誤輸出設(shè)備7.3.cerr和clog間的區(qū)別是?cerr不經(jīng)過緩沖區(qū)直接顯示錯誤信息。而clog存放在緩沖區(qū),緩沖區(qū)
49、滿或遇上endl時再輸出。7.4C+提供哪兩種控制輸入輸出格式的方法?一種是使用ios類中的有關(guān)格式控制的流成員函數(shù)進(jìn)行格式控制,另一種是使用稱為操縱符的特殊類型的函數(shù)控制。7.5C+進(jìn)行文件輸入輸出的基本過程是什么?即打開文件,首先創(chuàng)建一個流對象,然后將這個流對象與文件相關(guān)聯(lián),此時才能進(jìn)行讀寫操作,讀寫操作完成后再關(guān)閉這個文件。7.6-7.8BCA7.9#inelude#ineludeusingnamespaeestd;intfactorial(intn)if(n=0|n=1)returnn;returnfaetorial(n-1)*n;intmain()for(inti=1;i=9;i+)eoutsetw(5)faetorial(i);if(i%3=0)eoutendl;return0;7.10#inelude#ineludeusingnamespaeestd;intmain()coutsetw(16-i);for(intj=1;j=(coutA;coutendl;return0;for(inti=1;i=7;i+)2*i-1);j+)7.11#include#
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州大學(xué)《全媒體新聞寫作與編輯》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州財(cái)經(jīng)職業(yè)學(xué)院《辦公室空間設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽幼兒師范高等專科學(xué)?!陡叻肿硬牧戏治鰷y試與研究方法》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025黑龍江省安全員考試題庫
- 貴陽信息科技學(xué)院《現(xiàn)代基礎(chǔ)醫(yī)學(xué)概論Ⅰ》2023-2024學(xué)年第一學(xué)期期末試卷
- 硅湖職業(yè)技術(shù)學(xué)院《社會網(wǎng)絡(luò)分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽學(xué)院《微生物基因工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年安徽建筑安全員-A證考試題庫附答案
- 廣州新華學(xué)院《學(xué)術(shù)規(guī)范與科技論文寫作車輛》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州衛(wèi)生職業(yè)技術(shù)學(xué)院《語文課堂教學(xué)技能與微格訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 人教版高一化學(xué)方程式大全
- JBT 7048-2011 滾動軸承 工程塑料保持架 技術(shù)條件
- Pre-IPO階段融資策略研究
- 陶藝校本課程實(shí)施方案(教學(xué)資料)
- 2024年山東省機(jī)場管理集團(tuán)威海國際機(jī)場有限公司招聘筆試參考題庫含答案解析
- 國際貨物運(yùn)輸委托代理合同(中英文對照)全套
- 銀行反恐應(yīng)急預(yù)案及方案
- 關(guān)于推某某同志擔(dān)任教育系統(tǒng)實(shí)職領(lǐng)導(dǎo)職務(wù)的報(bào)告(職務(wù)晉升)
- 2023消防安全知識培訓(xùn)
- Exchange配置與規(guī)劃方案專項(xiàng)方案V
- 三年級上冊脫式計(jì)算練習(xí)200題及答案
評論
0/150
提交評論