C++PPT總結(jié)
C++PPT總結(jié)
1、世界上第一種計(jì)算機(jī)高級(jí)語(yǔ)言誕生于1954年,它是FORTRAN語(yǔ)言。
2、C++是由AT&TBell(貝爾)實(shí)驗(yàn)室的BjarneStroustrup博士及其同事于20世紀(jì)80年代初在C語(yǔ)言的基礎(chǔ)上開發(fā)成功的。C++保留了C語(yǔ)言原有的所有優(yōu)點(diǎn),增加了面向?qū)ο蟮臋C(jī)制。C++是由C發(fā)展而來(lái)的,與C兼容。用C語(yǔ)言寫的程序基本上可以不加修改地用于C++。從C++的名字可以看出它是C的超集。C++既可用于面向過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì),又可用于面向?qū)ο蟮某绦蛟O(shè)計(jì),是一種功能強(qiáng)大的混合型的程序設(shè)計(jì)語(yǔ)言。3、C++與C的區(qū)別和聯(lián)系:
1)C++全面兼容C,包括它的語(yǔ)法和函數(shù)庫(kù).
2)C++對(duì)C原有的一些不完善的地方做了補(bǔ)充性的修改和修正.
3)C語(yǔ)言是一種面向過(guò)程的語(yǔ)言,C++是C的基礎(chǔ)上引入了面向?qū)ο蟮臋C(jī)制.4)C++針對(duì)當(dāng)前程序設(shè)計(jì)鄰域的泛型編程,引入了模板機(jī)制.4、C++與C的特點(diǎn)和優(yōu)點(diǎn):
1)是一種高級(jí)程序設(shè)計(jì)語(yǔ)言,語(yǔ)言簡(jiǎn)潔易讀易懂.
2)C是一種底層語(yǔ)言,即可設(shè)計(jì)系統(tǒng)軟件,也可設(shè)計(jì)應(yīng)用軟件.3)它具有一些低級(jí)語(yǔ)言的特征,所以效率很高.
4)它同時(shí)也是計(jì)算機(jī)領(lǐng)域中的一種文化,可以這樣說(shuō)C語(yǔ)言是計(jì)算機(jī)語(yǔ)言中的普通話.5)歷史比較長(zhǎng),成熟穩(wěn)定,相對(duì)應(yīng)的編程資源非常豐富.
6)因?yàn)楝F(xiàn)代主流的操作系統(tǒng)本身就是用C實(shí)現(xiàn)的,所以移植性好.5、C++簡(jiǎn)單程序的含義和結(jié)構(gòu)
6、include:稱為文件包含命令,其意義是把引號(hào)“”或尖括號(hào)<>內(nèi)指定的文件包含到本程序來(lái),成為本程序的一部分!啊昂<>的區(qū)別在于,系統(tǒng)在尋打包含的文件時(shí)的路徑不同,使用“”時(shí)會(huì)從當(dāng)前目錄開始尋找,找不到再到系統(tǒng)目錄找,使用時(shí),則只在系統(tǒng)目錄中尋找.7、自增1,自減1運(yùn)算符均為單目運(yùn)算,都具有右結(jié)合性
8、算法的基本控制結(jié)構(gòu)有三種:順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu).9、取地址運(yùn)算符&;取內(nèi)容運(yùn)算符*10、指針賦值的兩種方式:inta;inta;int*p;int*p=&a;p=&a;第1頁(yè)(共2頁(yè))
11、用字符數(shù)組和字符指針變量都可實(shí)現(xiàn)字符串的存儲(chǔ)和運(yùn)算。但兩者是有區(qū)別的:字符指針變量可以賦為不同的地址做為值,而字符數(shù)組不可以.
12、函數(shù)指針變量不能進(jìn)行算術(shù)運(yùn)算,這是與數(shù)組指針變量不同的。數(shù)組指針變量加減一個(gè)整數(shù)可使指針移動(dòng)指向后面或前面的數(shù)組元素,而函數(shù)指針的移動(dòng)是毫無(wú)意義的。函數(shù)調(diào)用中"(*指針變量名)"的兩邊的括號(hào)不可少,其中的*不應(yīng)該理解為求值運(yùn)算,在此處它只是一種指針的表示符號(hào)。指針就是用來(lái)存儲(chǔ)地址的變量,我們可以通過(guò)指針找到地址,再通過(guò)地址找到該地址存儲(chǔ)的值。
13、通過(guò)指針程序員可以直接對(duì)內(nèi)存進(jìn)行操作,這樣的優(yōu)點(diǎn)是使程序緊湊簡(jiǎn)潔,高效;不過(guò)由于它的概念比較復(fù)雜,使用起來(lái)比較靈活,因此初學(xué)者常常容易犯錯(cuò)。14、地址就是內(nèi)存中的一個(gè)片段,使用&符號(hào)來(lái)獲取某一個(gè)變量的地址。
charstr[]="123456";char*p=str;cout
擴(kuò)展閱讀:C++試題總結(jié)
C++PPT試題
1、以下敘述正確的是(D)
A)可以把define和if定義為用戶標(biāo)識(shí)符B)可以把define定義為用戶標(biāo)識(shí)符,但不能把if定義為用戶標(biāo)識(shí)符C)可以把if定義為用戶標(biāo)識(shí)符,但不能把define定義為用戶標(biāo)識(shí)符D)define和if都不能定義為用戶標(biāo)識(shí)符2、下列計(jì)算機(jī)語(yǔ)言中,CPU能直接識(shí)別的是(D)
A)A)自然語(yǔ)言B)高級(jí)語(yǔ)言C)匯編語(yǔ)言D)機(jī)器語(yǔ)言3、以下敘述中正確的是(A)
A)C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方B)花括號(hào)"{"和"}"只能作為函數(shù)體的定界符C)構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名D)分號(hào)是C語(yǔ)句之間的分隔符,不是語(yǔ)句的一部分4、以下不能定義為用戶標(biāo)識(shí)符的是(D)
A)scanfB)VoidC)_3com_D)int
5、C++語(yǔ)言相對(duì)于C語(yǔ)言所做的最大變化是。(C)
A,效率更高B,所帶的庫(kù)函數(shù)C,增加了面向?qū)ο蟮奶卣鱀,語(yǔ)言表達(dá)更直觀6、在計(jì)算機(jī)系統(tǒng)中,一個(gè)字節(jié)的二進(jìn)制位數(shù)為(B)
A)16B)8C)4D)由CPU的型號(hào)決定7、在C語(yǔ)言中,合法的長(zhǎng)整型常數(shù)是(A)
A)OLB)4962710C)324562&D)216D8、以下選項(xiàng)中合法的字符常量是(B)
A)"B"B)"\\x10"C)68D)D9、以下選項(xiàng)中,非法的字符常量是(C)
A)"\\t"B)"\\17"C)"n"D)"\\xaa10、以下選項(xiàng)中不屬于C語(yǔ)言的類型的是(D)
A)signedshortintB)unsignedlongintC)unsignedintD)longshort
11、一個(gè)long類型的變量,在內(nèi)存中占用幾個(gè)字節(jié)。(C)A)1字節(jié)B)2字節(jié)C)4字節(jié)D)8字節(jié)
12、假定x和y為double型,則表達(dá)式x=2,y=x+3/2的值是(D)
A)3.500000B)3C)2.000000D)3.00000013、2、以下合法的賦值語(yǔ)句是(AD)
A)x=y=100B)d--;C)x+y;D)c=int(a+b);14、設(shè)a、b、C、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達(dá)式(m=a>b)&&(n=c>d)運(yùn)算后,n的值為(C)
A)0B)1C)2D)3
15、整型變量x和y的值相等、且為非0值,則以下選項(xiàng)中,結(jié)果為零的表達(dá)式是(D)
A)x||yB)x|yC)x&yD)x^y16、十進(jìn)制數(shù)127轉(zhuǎn)換成二進(jìn)制數(shù)是(B)
A)11111111B)01111111C)10000000D)1111111017、若有定義:inta=8,b=5,C;,執(zhí)行語(yǔ)句C=a/b+0.4;后,C的值為(B)
A)1.4B)1C)2.0D)2
第1頁(yè)(共17頁(yè))
18、若變量a是int類型,并執(zhí)行了語(yǔ)句:a="A"+1.6;,則正確的敘述是(D)
A)a的值是字符CB)a的值是浮點(diǎn)型
C)不允許字符型和浮點(diǎn)型相加D)a的值是字符"A"的ASCII值加上1。19、結(jié)構(gòu)化程序設(shè)計(jì)所規(guī)定的三種基本控制結(jié)構(gòu)是(C)
A)輸入、處理、輸出B)樹形、網(wǎng)形、環(huán)形C)順序、選擇、循環(huán)D)主程序、子程序、函數(shù)20、有定義語(yǔ)句:inta=1,b=2,c=3,x;,則以下選項(xiàng)中各程序段執(zhí)行后,x的值不為3的是(C)A)if(c25、將“China”譯成密碼,密碼規(guī)律是:用原來(lái)的字母后面第4個(gè)字母代替原來(lái)的字母。例如,字母“A”后面第4個(gè)字母是“E”,用“E”代替“A”。因此,“China”應(yīng)譯為“Glmre”。請(qǐng)編寫一程序,用賦初值的方法使c1,c2,c3,c4,c55個(gè)變量的值分別為‘C’,‘h’,‘i’,‘n’,‘a(chǎn)’,經(jīng)過(guò)運(yùn)算,使c1,c2,c3,c4,c5分別為‘G’,‘l’,‘m’,‘r’,‘e’,并輸出。#includeusingnamespacestd;intmain()
{charc1="C",c2="h",c3="i",c4="n",c5="a";c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;
cout27、在調(diào)用函數(shù)時(shí),如果實(shí)參是簡(jiǎn)單變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是(B)A)地址傳遞B)單向值傳遞
C)由實(shí)參傳給形參,再由形參傳回實(shí)參D)傳遞方式由用戶指定28、以下函數(shù)值的類型是(A)
fun(floatx){floaty;y=3*x-4;returny;}A)intB)不確定C)voidD)float
29、若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯(cuò)誤的是(D)
A)函數(shù)調(diào)用可以作為獨(dú)立的語(yǔ)句存在B)函數(shù)調(diào)用可以作為一個(gè)函數(shù)的實(shí)參C)函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中
D)函數(shù)調(diào)用可以作為一個(gè)函數(shù)的形參30、下面的特點(diǎn)中不屬于引用機(jī)制的是(A)A)效率更高B)節(jié)省內(nèi)存占用C)可以改變參數(shù)的值D)代碼書寫更簡(jiǎn)潔31、下面對(duì)遞歸機(jī)制描述正確的是(D)
A)在某個(gè)分支中一定有對(duì)自身的調(diào)用B)可以有,也可以沒(méi)有反回值C)可以有參數(shù),也可以沒(méi)有參數(shù)D)在函數(shù)內(nèi)部一定有分支結(jié)構(gòu)32、若定義:inta=511,*b=&a;,則printf(“%d\\n”,*b);的輸出結(jié)果為(D)A)無(wú)確定值B)a的地址C)512D)51133、若有定義:intaa[8];。則以下表達(dá)式中不能代表數(shù)組元aa[1]的地址的是(C)A)&aa[0]+1B)&aa[1]C)&aa[0]++D)aa+134、若有定義:intaa[8];。則以下表達(dá)式中不能代表數(shù)組元aa[1]的地址的是(C)A)&aa[0]+1B)&aa[1]C)&aa[0]++D)aa+1
35、若有以下定義和語(yǔ)句(C)ints[4][5],(*ps)[5];ps=s;則對(duì)s數(shù)組元素的正確引用形式是A)ps+1B)*(ps+3)C)ps[0][2]D)*(ps+1)+336、在說(shuō)明語(yǔ)句:int*f();中,標(biāo)識(shí)符f代表的是(C)
A)一個(gè)用于指向整型數(shù)據(jù)的指針變量B)一個(gè)用于指向一維數(shù)組的行指針C)一個(gè)用于指向函數(shù)的指針變量D)一個(gè)返回值為指針型的函數(shù)名37、以下選項(xiàng)中,能定義s為合法的結(jié)構(gòu)體變量的是(B)38、A)typedefstructabcB)struct{doublea;{doublea;charb[10];charb[10];}s;}s;C)structABCD)typedefABC{doublea;{doublea;charb[10];charb[10];}}ABCs;ABCs;39、structst
{intx;int*y;}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],};
第4頁(yè)(共17頁(yè))
main()#include{p=aa;#includeprintf("%d\\n",++(p->x));usingnamespacestd;}以上程序的輸出是(C)constintn=5;A)10B)11C)51D)60structstudent40、編寫一個(gè)函數(shù)print,打印一個(gè)學(xué)生的成績(jī)數(shù)組,{charnum[6];該數(shù)組中有五個(gè)學(xué)生的數(shù)據(jù),每個(gè)學(xué)生的數(shù)據(jù)包括charname[8];num(學(xué)號(hào)),name(姓名),score[3](3門課的成intscore[4];#include績(jī))。用主函數(shù)輸入這些數(shù)據(jù),}stu[n];usingnamespacestd;classBox{public:voidget_value();voidvolume();voiddisplay();public:floatlengh;floatwidth;floatheight;floatvol;};voidBox::get_value(){coutlengh;cin>>width;cin>>height;}voidBox::volume(){vol=lengh*width*height;}voidBox::display(){cout41、變量a所占內(nèi)存字節(jié)數(shù)是(A)
A)4B)5C)6D)8unionU
{charst[4];inti;charl;}a;
42、以下對(duì)枚舉類型名的定義中正確的是(B)
A)enuma={one,two,three};B)enuma{one=9,two=11,three};C)enuma={“one”,“two”,“three”};D)enuma{“one”,“two”,“three”};#include"iostream"43、類的示例usingnamespacestd;"iostream"#includeclassSaleProductnamespacestd;using{public:classStudentintnumber;{intcount;:publicfloatprice;number;intfloatMoreDis;score;intSaleProduct(intn,intc,floatp){number=n;Student(intn,ints)count=c;{price=p;number=n;MoreDis=1;score=s;if(c>=10)}{};MoreDis=9.8;voidmain()}{Student}stu[5]={Student(001,20),Student(0002,30),Stu};dent(0003,50),Student(0004,70),Student(0005,voidgetSum(SaleProduct*p)90)};{Student*p=stu;floatdiscount=0.8;coutC++試題
一、選擇填空題(共20小題,每小題2分,共40分)。1.關(guān)于C++與C語(yǔ)言關(guān)系的描述中,(D)是錯(cuò)誤的。a.C語(yǔ)言是C++語(yǔ)言的一個(gè)子集b.C語(yǔ)言與C++語(yǔ)言是兼容的
c.C++語(yǔ)言對(duì)C語(yǔ)言進(jìn)行了一些改進(jìn)d.C++語(yǔ)言和C語(yǔ)言都是面向?qū)ο蟮?.按照標(biāo)識(shí)符的要求,(A)符號(hào)不能組成標(biāo)識(shí)符。a.連接符b.下劃線c.大小寫字母d.數(shù)字字符
3.為了避免嵌套的if-else語(yǔ)句的二義性,C語(yǔ)言規(guī)定else總是與(C)組成配對(duì)關(guān)系。a.縮排位置相同的ifb.在其之前未配對(duì)的ifc.在其之前未配對(duì)的最近的ifd.同一行上的if4.在"inta[][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是(C)。a.1b.0c.6d.2
5.設(shè)"char**s;",以下正確的表達(dá)式是(B)。
a.s="computer";b.*s="computer";c.**s="computer";d.*s="c";6.對(duì)于"int*pa[5];"的描述中,(D)是正確的。
a.pa是一個(gè)指向數(shù)組的指針,所指向的數(shù)組是5個(gè)int型元素
b.pa是一個(gè)指向某數(shù)組中第5個(gè)元素的指針,該元素是int型變量c.pa[5]表示某個(gè)元素的第5個(gè)元素的值
d.pa是一個(gè)具有5個(gè)元素的指針數(shù)組,每個(gè)元素是一個(gè)int型指針7.已知:intm=10;在下列表示引用的方法中,(A)是正確的。a.int&x=m;b.int&y=10;c.int&z;d.float&t=&m;8.下列for循環(huán)的次數(shù)為(B)。for(i=0,x=0;!x&&ia.structstudent{intno;
charname[10];floatscore;};
b.structstud[20]{intno;
charname[10];floatscore;};
c.structstudent{intno;
charname[10];floatscore;}stud[20];d.struct{intno;
charname[10];floatscore;}stud[100];
15.將兩個(gè)字符串連接起來(lái)組成一個(gè)字符串時(shí),選用(C)函數(shù)。a.strlen()b.strcpy()c.strcat()d.strcmp()16.(D)不是構(gòu)造函數(shù)的特征
a.構(gòu)造函數(shù)的函數(shù)名與類名相同b.構(gòu)造函數(shù)可以重載c.構(gòu)造函數(shù)可以設(shè)置缺省參數(shù)d.構(gòu)造函數(shù)必須指定類型說(shuō)明
17.已知:類A中一個(gè)成員函數(shù)說(shuō)明如下:voidSet(A&a);其中,A&的含義是(C)。a.指向類A的指針為a
b.將a的地址值賦給變量Set
c.a是類A對(duì)象的引用,用來(lái)作函數(shù)Set()的參數(shù)d.變量A與a按位與作為函數(shù)Set()的參數(shù)
18.已知:print()函數(shù)是一個(gè)類的常成員函數(shù),它無(wú)返回值,下列表示中,(A)是正確的。a.voidprint()const;b.constvoidprint();c.voidconstprint();d.voidprint(const);19.關(guān)于虛函數(shù)的描述中,(C)是正確的。
a.虛函數(shù)是一個(gè)static類型的成員函數(shù)b.虛函數(shù)是一個(gè)非成員函數(shù)
c.基類中說(shuō)明了虛函數(shù)后,派生類中將其對(duì)應(yīng)的函數(shù)可不必說(shuō)明為虛函數(shù)d.派生類的虛函數(shù)與基類的虛函數(shù)具有不同的參數(shù)個(gè)數(shù)和類型20.關(guān)于new運(yùn)算符的下列描述中,(D)是錯(cuò)的。a.它可以用來(lái)動(dòng)態(tài)創(chuàng)建對(duì)象和對(duì)象數(shù)組
b.使用它創(chuàng)建的對(duì)象和對(duì)象數(shù)組可以使用運(yùn)算符delete刪除c.使用它創(chuàng)建對(duì)象時(shí)要調(diào)用構(gòu)造函數(shù)
d.使用它創(chuàng)建對(duì)象數(shù)組時(shí)必須指定初始值二、問(wèn)答題(15分)
1、(3分)虛析構(gòu)函數(shù)有什么作用?對(duì)象銷毀時(shí)要調(diào)用析構(gòu)函數(shù),如果不是定義的虛析構(gòu)函數(shù),基類指針只能訪問(wèn)基類析構(gòu),不能訪問(wèn)派生類析構(gòu),若定義的虛析構(gòu)則可以解決這問(wèn)
第8頁(yè)(共17頁(yè))
題。
解答要點(diǎn):
對(duì)象銷毀時(shí),需要調(diào)用析構(gòu)函數(shù)。在多態(tài)調(diào)用時(shí),是用基類的指針訪問(wèn)派生類的對(duì)象。如果析構(gòu)函數(shù)是非虛函數(shù),則基類指針只能訪問(wèn)基類的析構(gòu)函數(shù),而不能訪問(wèn)派生類的析構(gòu)函數(shù),導(dǎo)致派生類對(duì)象銷毀時(shí),沒(méi)有調(diào)用派生類的析構(gòu)函數(shù),只是調(diào)用了基類的析構(gòu)函數(shù)。如果把析構(gòu)函數(shù)定義成虛函數(shù),則可克服這個(gè)問(wèn)題。
2、(3分)拷貝構(gòu)造函數(shù)在哪幾種情況下調(diào)用?用一個(gè)對(duì)象初始化另一個(gè)對(duì)象時(shí);當(dāng)用對(duì)象作為函數(shù)參數(shù)傳遞時(shí);當(dāng)函數(shù)返回對(duì)象時(shí)3、(4分)函數(shù)重載與函數(shù)覆蓋有什么不同,它們與多態(tài)有什么關(guān)系?函數(shù)重載函數(shù)名相同,而函數(shù)參數(shù)個(gè)數(shù),函數(shù)類型不同;覆蓋是指函數(shù)名,函數(shù)個(gè)數(shù),函數(shù)類型都相同。C++是通過(guò)虛函數(shù)的覆蓋,實(shí)現(xiàn)多態(tài)的功能。解答要點(diǎn):
函數(shù)重載是指函數(shù)名相同,而函數(shù)的參數(shù)個(gè)數(shù)或類型不同;覆蓋是指在派生類中成員函數(shù)與基類成員函數(shù)的函數(shù)名、參數(shù)個(gè)數(shù)、類型與返回值均相同;C++中正是通過(guò)虛函數(shù)的覆蓋,實(shí)現(xiàn)多態(tài)的功能。
4、(3分)C++繼承是如何工作的?解答要點(diǎn):
繼承使得派生類能夠使用基類的公有和保護(hù)成員,從而實(shí)現(xiàn)代碼的復(fù)用,派生類可以增加成員,也可以隱藏和覆蓋基類的成員。對(duì)于公有繼承,基類成員的訪問(wèn)權(quán)限在派生類保持不變。
5、(2分)類與對(duì)象有什么區(qū)別?解答要點(diǎn):
類是類型,是對(duì)象的抽象,對(duì)象是類的具體實(shí)例。一個(gè)類可以有多個(gè)對(duì)象,每個(gè)對(duì)象都有自己的存儲(chǔ)單元,而類不占存儲(chǔ)單元。三、(6分)分析下面程序的運(yùn)行結(jié)果#includeclassB{
public:B(){}
B(inti){b=i;}
virtualvoidvirfun(){
coutintd;
voidvirfun(){
cout{
if(tos==SIZE)
cout}//Matchwhile(*str...)statementreturncount;}
《試題二》
一、(共20分,每題2分)單項(xiàng)選擇
1.已定義了一個(gè)類A并有語(yǔ)句A*pa=newA(5);那么以下說(shuō)法正確的是:(A)A.該語(yǔ)句會(huì)創(chuàng)建A類的一個(gè)對(duì)象,并將此對(duì)象的地址賦給指針pa;B.該語(yǔ)句會(huì)創(chuàng)建A類的5個(gè)對(duì)象,且它們的地址是連續(xù)的;
C.當(dāng)指針變量pa超出其作用域時(shí),pa和為對(duì)象分配的空間都將被自動(dòng)釋放;D.類A中一定有一個(gè)顯式定義的構(gòu)造函數(shù)和一個(gè)顯式定義的虛析構(gòu)函數(shù);
2.定義類A的非靜態(tài)成員函數(shù)A&f(A&one)時(shí),需有語(yǔ)句returnexp;則exp不能是:(B)A.類A中類型為A的靜態(tài)數(shù)據(jù)成員B.f中用語(yǔ)句Aa=one;定義的量aC.oneD.*this
3.在一個(gè)類中,下列哪些成員可以是多個(gè)?(D)A.無(wú)參構(gòu)造函數(shù)B.析構(gòu)函數(shù)C.原型相同的非靜態(tài)成員函數(shù)D.靜態(tài)成員函數(shù)
4.對(duì)類T中的下列成員,若不考慮代碼優(yōu)化,一般來(lái)說(shuō)它們中的哪個(gè)執(zhí)行起來(lái)最慢?(C)A.缺省的無(wú)參構(gòu)造函數(shù)B.缺省的拷貝構(gòu)造函數(shù)
C.Tf(){Tt;returnt;}D.不能判定A、B、C哪個(gè)最慢
5.對(duì)函數(shù)原型為int&min(int&a,int&b);的全局函數(shù),下列語(yǔ)句塊哪個(gè)是錯(cuò)誤的:(C)A.intx=10,y=5;min(x,y)=100;B.intx=10,y=5,z;z=min(x,y+=x);C.intx=10,y=5;min(x,10)=y;D.intx=10,y=5;x=min(x,y);6.關(guān)于拷貝構(gòu)造函數(shù)錯(cuò)誤的說(shuō)法有:(B)
A.拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),且不能在類中進(jìn)行函數(shù)重載。
B.若自定義派生類的拷貝構(gòu)造函數(shù),那么也必須自定義基類的拷貝構(gòu)造函數(shù)。C.拷貝構(gòu)造函數(shù)只能有一個(gè)參數(shù),且為常量引用或非常量引用。D.拷貝構(gòu)造函數(shù)不允許在函數(shù)體中使用return語(yǔ)句。7.下列對(duì)虛基類聲明正確的是:(B)
A.classvirtualB:publicAB.classB:virtualpublicAC.classB:publicAvirtualD.virtualclassB:publicA
8.若有語(yǔ)句A*constp=newB;,其中類B是從類A直接派生得到的,那么下列說(shuō)法錯(cuò)誤的是:(D)
A.若要執(zhí)行語(yǔ)句p->f();,那么類A中一定有一個(gè)與f()函數(shù)匹配的函數(shù)聲明。B.類B一定是通過(guò)public繼承方式從類A派生的。
C.類B的構(gòu)造函數(shù)中,至少有一個(gè)無(wú)參的或提供全部缺省參數(shù)的構(gòu)造函數(shù)。D.通過(guò)指針p,只能訪問(wèn)類中的常量成員函數(shù)或靜態(tài)成員函數(shù)。9.下面說(shuō)明的哪個(gè)數(shù)據(jù)不能作為類T的數(shù)據(jù)成員定義。(D)
A.T*pTB.classQ{}q1,q2;C.staticTt;D.constTt;10.下列哪種運(yùn)算符可以被重載:(D)A.sizeofB.::C.?:D.[]二、(共15分,每題3分)回答下列各題,可以舉例說(shuō)明。
1.說(shuō)明基類中的public、protected和private成員分別在public、protected和private繼承方式下在派生類中的可訪問(wèn)性。
第12頁(yè)(共17頁(yè))
重點(diǎn)是基類中的任何Private在派生類中都是不可訪問(wèn)的.
2.若類A有私有數(shù)據(jù)成員intn,哪些情況下,在一個(gè)函數(shù)的函數(shù)體中能夠直接訪問(wèn)A類的數(shù)據(jù)成員n。(至少三種)
如:a)voidA::f(){intk=n;}b)voidA::g(A&one){n+=one.n;}c)A的友員函數(shù)inth(A&one){returnone.n;}
3.哪些情況下,定義構(gòu)造函數(shù)時(shí)必須使用初始化列表。(至少三種)
a)有常量數(shù)據(jù)成員b)有引用數(shù)據(jù)成員c)使用基類的帶參數(shù)的構(gòu)造函數(shù)初始化4.將一個(gè)基類的析構(gòu)函數(shù)定義為虛函數(shù)的作用和目的是什么?
如:基類A,子類B,A*p=newB;當(dāng)deletep;時(shí),若無(wú)虛析構(gòu)函數(shù),只析構(gòu)基類部分。5.為什么在類中不能用成員函數(shù)voidf(int&)重載(overload)本類的成員函數(shù)intf(int)?
如:inta=100;f(a);這時(shí)兩個(gè)都可以了,有二義性。三、(共10分,每題1分)判斷正誤,只需回答“正確”或“錯(cuò)誤”。1.this指針既可以是指向常量對(duì)象的非常量指針,也可以是指向非常量對(duì)象的常量指針。(×)2.即使不創(chuàng)建類的實(shí)例對(duì)象,也可以在main函數(shù)中訪問(wèn)該類的公有靜態(tài)成員函數(shù)。(√)3.在一個(gè)函數(shù)體內(nèi)不允許定義其它函數(shù),同樣在一個(gè)類中也不允許定義其它類。(×)4.若想在一個(gè)cpp文件中使用一個(gè)模板類,那么在預(yù)編譯后,此文件必須含有該模板類的全部聲明和定義。(√)
5.在捕獲異常時(shí),異常會(huì)進(jìn)行自動(dòng)類型轉(zhuǎn)換并按照異常類型的同一性進(jìn)行匹配。(×)6.一個(gè)抽象類的后裔類,既可以是抽象類,也可以是具體類。(√)7.類A中的轉(zhuǎn)換函數(shù)可定義為:intoperatorA()const{return0;}.(×)8.類的多個(gè)實(shí)例對(duì)象可共享本類的虛擬表。(√)
9.用const修飾的成員函數(shù)只能通過(guò)常量對(duì)象調(diào)用。(×)
10.類B是類A的派生類,類C是類A的友員類,那么類C也是類B的友員類。(×)
C++期末試題
一、判斷題(每小題1分,共10分)
(√)1、說(shuō)明函數(shù)原型時(shí)不需要指明每個(gè)函數(shù)參數(shù)的名字,只需要說(shuō)明每個(gè)參數(shù)的類型和返回值類型就可以了。(×)2、所有的表達(dá)式都有值。
(√)3、程序的編譯是以文件為單位的,因此將程序分到多個(gè)文件中可以減少每次對(duì)程序修改所帶來(lái)的編譯工作量。
(×)4、類的靜態(tài)數(shù)據(jù)成員需要在定義每個(gè)類的對(duì)象時(shí)進(jìn)行初始化。(×)5、基類中被說(shuō)明為protected和private的成員只能被其派生類的成員函數(shù)訪問(wèn),不能被其它的函數(shù)訪問(wèn)。
(√)6、當(dāng)將一個(gè)類S定義為另一個(gè)類A的友元類時(shí),類S的所有成員函數(shù)都可以直接訪問(wèn)類A的所有成員。
(×)7、當(dāng)函數(shù)的返回值是數(shù)組類型的,傳遞的是數(shù)組第一個(gè)元素的地址。(√)8、如果派生類的成員函數(shù)的原型與基類中被定義為虛函數(shù)的成員函數(shù)原型相同,那么,這個(gè)函數(shù)自動(dòng)繼承基類中虛函數(shù)的特性。
(×)9、字符串’hello,world”在內(nèi)存中存放時(shí),占用11個(gè)字節(jié)的空間。(√)10、用new動(dòng)態(tài)申請(qǐng)的內(nèi)存空間,必須用delete來(lái)釋放。二、單項(xiàng)選擇題:(每小題2分,共30分)
1.在每個(gè)C++程序中都必須包含有這樣一個(gè)函數(shù),該函數(shù)的函數(shù)名為____A__。A.mainB.MAINC.nameD.function
第13頁(yè)(共17頁(yè))
2.設(shè)x和y均為bool量,則x&&y為真的條件是__A____。
A.它們均為真B.其中一個(gè)為真C.它們均為假D.其中一個(gè)為假3.下面的哪一個(gè)保留字不能作為函數(shù)的返回類型?___C____。A.voidB.intC.newD.1ong
4.假定a為一個(gè)整型數(shù)組名,則元素a[4]的字節(jié)地址為___B____。A.a(chǎn)十4B.a(chǎn)十8C.a(chǎn)十16D.a(chǎn)十325.C++源程序文件的缺省擴(kuò)展名為___A___。
A.cppB.exeC.objD.lik6.在下面的二維數(shù)組定義中,正確的是(C)。
A.inta[5][];B.inta[][5];C.inta[][3]={{1,3,5},{2}};D.inta[](10);7.以下正確的說(shuō)法是___B____。
A.用戶調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù)前,必須重新定義
B.用戶可以重新定義標(biāo)準(zhǔn)庫(kù)函數(shù),若如此,該函數(shù)將失去原有含義C.系統(tǒng)不允許用戶重新定義標(biāo)準(zhǔn)庫(kù)函數(shù)D.用戶調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù)前,不必使用預(yù)編譯命令將該函數(shù)所在文件包括到用戶源文件中8.文件包含命令中被包含的文件的擴(kuò)展名____C___。
A.必須是.hB.不能是.hC.可以是.h或.cppD.必須是.cpp9.要使語(yǔ)句“p=newint[10][20];”能夠正常執(zhí)行,p應(yīng)定義為___D____。A.int*p;B.int**p;C.int*p[20];D.int(*p)[20];10.有關(guān)構(gòu)造函數(shù)的說(shuō)法不正確的是___C____。
A、構(gòu)造函數(shù)名字和類的名字一樣。B.構(gòu)造函數(shù)無(wú)任何函數(shù)類型。
C.構(gòu)造函數(shù)有且只有一個(gè)D.構(gòu)造函數(shù)在說(shuō)明類對(duì)象時(shí)自動(dòng)執(zhí)行。11.假定AA為一個(gè)類,a為該類私有的數(shù)據(jù)成員,若要在該類的一個(gè)成員函數(shù)中訪問(wèn)它,則書寫格式最好為____A___。
A.aB.AA::aC.a()D.AA::a()12、下列關(guān)鍵字中,____B___不是類定義中使用的關(guān)鍵字。A.classB.switchC.privateD.public
13.當(dāng)類中的一個(gè)整型指針成員指向一塊具有n*sizeof(int)大小的存儲(chǔ)空間時(shí),它最多能夠存儲(chǔ)____A___個(gè)整數(shù)。
A.nB.n+1C.n-1D.1
14.假定AB為一個(gè)類,則執(zhí)行“ABa,b(3),*p;”語(yǔ)句時(shí)共調(diào)用該類構(gòu)造函數(shù)的次數(shù)為___A____。
A.2B.3C.4D.5
15.在重載一個(gè)運(yùn)算符時(shí),其參數(shù)表中沒(méi)有任何參數(shù),這表明該運(yùn)算符是___B____。A.作為友元函數(shù)重載的1元運(yùn)算符B.作為成員函數(shù)重載的1元運(yùn)算符C.作為友元函數(shù)重載的2元運(yùn)算符D.作為成員函數(shù)重載的2元運(yùn)算符三、填空題:(每空2分,共20分)
1、從一條函數(shù)原型語(yǔ)句“intfun1(void);”可知,該函數(shù)的返回類型為int,該函數(shù)帶有0個(gè)參數(shù)。
2、假定x是一個(gè)邏輯量,則x||false的值為_x__。
3、作為語(yǔ)句標(biāo)號(hào)使用的C++保留字case和defaule只能用于switch語(yǔ)句的定義體中。4、若多個(gè)基類及其派生類中都定義了同名函數(shù)成員,要訪問(wèn)相應(yīng)函數(shù)時(shí),就需要在函數(shù)名前加上類名和類區(qū)分符
5、C++支持兩種多態(tài)性:編譯時(shí)的多態(tài)性和運(yùn)行時(shí)時(shí)的多態(tài)性。
第14頁(yè)(共17頁(yè))
6、假定用戶為類AB定義了一個(gè)構(gòu)造函數(shù)“AB(intaa,char*bb=NULL):a(aa),b(bb){}”,則該類中至少包含有2個(gè)數(shù)據(jù)成員。
7、類是用戶定義的類型,具有類類型的變量稱作對(duì)象。
四、程序填充,對(duì)程序、函數(shù)或類中劃有橫線的位置,根據(jù)題意按標(biāo)號(hào)把合適的內(nèi)容填寫到程序下面相應(yīng)標(biāo)號(hào)的后面(每小題6分,共18分)
1.打印出2至99之間的所有素?cái)?shù)(即不能被任何數(shù)整除的數(shù))。(每空2分)#include#includevoidmain(){inti,n;
for(n=2;nclassAdd{
private:intx,y;
public:Add(inta,intb){x=a;y=b;
coutvoidfunc(char*str){cout
友情提示:本文中關(guān)于《C++PPT總結(jié)》給出的范例僅供您參考拓展思維使用,C++PPT總結(jié):該篇文章建議您自主創(chuàng)作。
來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。