21.B!窘馕觥勘绢}考查關(guān)于C++語言繼承問題中派生類對基類的訪問。C++語言中通常有三種繼承修飾符,即public、protected、private,限制依次嚴(yán)格,另外對類中的數(shù)據(jù)和函數(shù)也由這三種修飾符進(jìn)行限制,有三種成員是不能繼承的:公有繼承基類的私有成員,私有繼承基類的私有成員,保護(hù)繼承基類的私有成員。
22.C!窘馕觥砍绦蛑蠦為A的派生類,由主函數(shù)入手,主函數(shù)中定義了類A的指針P指向類B。根據(jù)基類中的“virtualvoidfuncl()”知道A中的funcl為虛函數(shù),執(zhí)行“P->fund();”語句,通過指針變量調(diào)用此虛函數(shù),此時(shí)調(diào)用的就是指針變量指向的同名函數(shù),即派生類的fund函數(shù),輸出B1。而fun2不是虛函數(shù),所以執(zhí)行“p->func2();”輸出為A2。
23.A!窘馕觥緾++流的輸入運(yùn)算符“>>”和輸出運(yùn)算符“<<”只能作為非成員函數(shù)重載。重載輸入流運(yùn)算符“>>”須使用的原型是istream&operator>>(istream&,<類名>&);。
24.A。【解析】本題首先執(zhí)行語句do{k+=5;cout<<’$’;}while(k<19);,循環(huán)執(zhí)行4次;全了4個(gè)“$”,k的值變?yōu)?0;然后執(zhí)行語句while(k-->0)cout<<’*’;,所以會輸出20個(gè)“*”。
25.D!窘馕觥吭贑++中規(guī)定如果一個(gè)類被聲明為類模板,那么其中的所有成員函數(shù)就都成為了模板函數(shù)。
26.D!窘馕觥勘绢}中,派生類C具有多重繼承關(guān)系,所以在派生類C的構(gòu)造函數(shù)中應(yīng)該包含基類A和類B的成員初始化列表。
27.D!窘馕觥勘绢}考查循環(huán)的嵌套、for和switch語句的應(yīng)用、C++中各種條件判斷,循環(huán)語句的用法。只要注意在C++語言中,系統(tǒng)在字符指針的最后位置會增加一個(gè)字符串結(jié)束符’\0’,執(zhí)行8次for循環(huán),再根據(jù)switch語句中的條件易知答案。
28.D!窘馕觥勘绢}考查文件對象的創(chuàng)建方法?梢灾苯佣x文件對象,也可以用new來動(dòng)態(tài)生成。很明顯,選項(xiàng)D中使用new的方式是錯(cuò)誤的。
29.D!窘馕觥勘绢}考查關(guān)于C++語言類的定義方法。在C++語言中類定義中的構(gòu)造函數(shù)是私有的,但是卻調(diào)用了其中的公有變量,在實(shí)例化時(shí)會斟現(xiàn)錯(cuò)誤。
30.A!窘馕觥縏estClass為基類,TestClass1是TestClass的派生類;愔械膄unl和fun2被定義為虛函數(shù),C++規(guī)定,當(dāng)一個(gè)成員函數(shù)被聲明為虛函數(shù)后,其派生類中的同名函數(shù)都自動(dòng)成為虛函數(shù),所以派生類中的funl和fun2也是虛函數(shù)。本題從main主函數(shù)入手,首先定義了TestClass類型的
對象obil和指針P,然后又定義了TestClassl的對象obj2。指針指向?qū)ο髈bj2,然后調(diào)用其成員函數(shù)fun1(),即輸出“funlTestClassl”。
31.A!窘馕觥勘绢}中FestClass為基類,TestClass1為派生類。在主函數(shù)中定義TestClassl對象obj(’x’),“TestClassl(charn):TestClass(n+1),c(n){}”,所以輸出x,然后調(diào)用基類構(gòu)造函數(shù),’x’+1=’y’,所以輸出y,即答案為xy。
32.A。【解析】本題考查類的繼承和派生。派生類執(zhí)行構(gòu)造函數(shù)的一般次序?yàn)椋菏紫日{(diào)用基類構(gòu)造函數(shù);然后調(diào)用成員對象的構(gòu)造函數(shù);最后是派生類構(gòu)造函數(shù)中的內(nèi)容。題目中定義派生類對象d時(shí),先調(diào)用基類Base的構(gòu)造函數(shù),輸出BBBf,然后調(diào)用派生類Derived的構(gòu)造函數(shù),輸出DD。
33.A。【解析】本題考查C++語言的數(shù)據(jù)類型。第一個(gè)枚舉常量的值為0;允許程序顯示的定義中指定部分或全部枚舉常量的值,枚舉常量默認(rèn)時(shí)。在前一枚舉常量值的基礎(chǔ)上以此增1。
34.D!窘馕觥勘绢}考查派生類的定義和使用。當(dāng)對象被刪除時(shí),派生類的析構(gòu)函數(shù)就被執(zhí)行。由于析構(gòu)函數(shù)不能被繼承,因此在執(zhí)行派生類的析構(gòu)函數(shù)時(shí),基類的析構(gòu)函數(shù)也將被調(diào)用。執(zhí)行順序是先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù),其順序與執(zhí)行構(gòu)造函數(shù)的順序正好相反。所以當(dāng)main函數(shù)結(jié)束時(shí),派生類DERIVED的對象X將被刪除,那么派生類DERIVED的析構(gòu)函數(shù)先被調(diào)用,輸出DERIVED,然后調(diào)用基類的析構(gòu)函數(shù)輸出BASE。
35.A!窘馕觥勘绢}考查靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)。靜態(tài)數(shù)據(jù)成員是類中所有對象共事的成員,而不是某個(gè)對象的成員。題目中的靜態(tài)數(shù)據(jù)成員n的運(yùn)算具有疊加性,執(zhí)行“n+=2”和“n-=3”后n的值為0。
36.C!窘馕觥考兲摵瘮(shù)是在聲明虛函數(shù)時(shí)被“初始化”為0的虛函數(shù)。不定義對象而只作為一種基本類型作為繼承的類,稱為抽象類。凡是包含純虛函數(shù)的類都是抽象類。抽象類的作用是作為一個(gè)類族的共同基類。
37.A。【解析】題中fun函數(shù)進(jìn)行了遞歸調(diào)用,第1次調(diào)用對:fun(3)n=3,S=3-fun(2),第二次調(diào)用時(shí):fun(2)n=2,s=2,返回第一次調(diào)用后,s=3-2=1。
38.B!窘馕觥吭贑++程序中,typename是可以替換為class的,但class不能都替換為typename。
39.C!窘馕觥縀onc1定義c1對象,調(diào)用Con的無參數(shù)構(gòu)造函數(shù),輸出1,ID值變?yōu)锳,執(zhí)行show(c1)時(shí)會調(diào)用復(fù)制構(gòu)造函數(shù),將c1對象的值復(fù)制給show函數(shù)的形參,此時(shí)輸出3,然后在show()中輸出c1的ID值A(chǔ),Conc2(’B’)定義c2對象,調(diào)用Con(charID)構(gòu)造函數(shù),輸出2,c2的ID值為B,show(c2)執(zhí)行時(shí)先調(diào)用復(fù)制構(gòu)造函數(shù)輸出3,然后輸出B。因此程序輸出結(jié)果為“13A238”。
40.C!窘馕觥炕愔姓f明的虛函數(shù),在派生類中自然就是虛函數(shù),所以類B中funcl()是虛函數(shù);而類A中的func2()沒有被關(guān)鍵字virtual修飾;所以不是虛函數(shù)。
![]() | ![]() .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書籍 |
![]() | ![]() .. 定價(jià):¥133 優(yōu)惠價(jià):¥133.0 更多書籍 |