C++復(fù)習(xí)題八完整_第1頁(yè)
C++復(fù)習(xí)題八完整_第2頁(yè)
C++復(fù)習(xí)題八完整_第3頁(yè)
C++復(fù)習(xí)題八完整_第4頁(yè)
C++復(fù)習(xí)題八完整_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C++作業(yè)題(8)一.選擇填空(1)定義重載函數(shù)的下列條件中,(C)是錯(cuò)誤的。A.要求參數(shù)個(gè)數(shù)不同 B.要求參數(shù)類型不同C.要求函數(shù)返回值類型不同 D.要求在參數(shù)個(gè)數(shù)相同時(shí),參數(shù)類型的順序不同(2)關(guān)于下列虛函數(shù)的描述中,(C)是正確的。A.虛函數(shù)是一個(gè)static存儲(chǔ)類的成員函數(shù)B.虛函數(shù)是一個(gè)非成員函數(shù)C.基類中說明了虛函數(shù)后,派生類中可不必將對(duì)應(yīng)的函數(shù)說明為虛函數(shù)D.派生類的虛函數(shù)與基類的虛函數(shù)應(yīng)具有不同的類型或個(gè)數(shù)(3)關(guān)于純虛函數(shù)和抽象類的描述中,(C)是錯(cuò)誤的。A.純虛數(shù)是一種特殊的虛函數(shù),它沒有具體實(shí)現(xiàn)B.抽象類中一定具有一個(gè)或多個(gè)純虛函數(shù)C.抽象類的派生類中一定不會(huì)再有純虛函數(shù)D.抽象類一般作為基類使用,使純虛函數(shù)的實(shí)現(xiàn)由其派生類給出(4)以下一種類中,(A)不能建立對(duì)象。A.抽象類B.派生類C.虛基類D.基類(5)下列函數(shù)中不能重載的是(C)。A)成員函數(shù)B)非成員函數(shù)C)析構(gòu)函數(shù)D)構(gòu)造函數(shù)(6)下列描述中,抽象類的特征有(D)。A)可以說明虛函數(shù)B)可以構(gòu)造函數(shù)重載C)可以定義友員函數(shù)D)不能說明其對(duì)象(7)下列不屬于動(dòng)態(tài)聯(lián)編實(shí)現(xiàn)的條件有(D)。A)要有說明的虛函數(shù)。B)調(diào)用虛函數(shù)的操作是指向?qū)ο蟮闹羔樆蛘邔?duì)象引用:或者是由成員函數(shù)調(diào)用虛函數(shù)。C)子類型關(guān)系的確立。D)在構(gòu)造函數(shù)中調(diào)用虛函數(shù)。(8)派生類中對(duì)基類的虛函數(shù)進(jìn)行替換時(shí),派生類中說明的虛函數(shù)與基類中的被替換的虛函數(shù)之間不要求滿足的是(C)。A)與基類的虛函數(shù)具有相同的參數(shù)個(gè)數(shù)。B)其參數(shù)的類型與基類的虛函數(shù)的對(duì)應(yīng)參數(shù)類型相同。C)基類必須定義純虛函數(shù)。D)其返回值或者與基類的虛函數(shù)相同,或者都返回指針或引用,并且派生類虛函數(shù)所返回的指針或引用的基類型是基類中被替換的虛函數(shù)所返回的指針或引用的基類的子類型。(9)下列關(guān)于抽象類說法正確的是:(B)A)抽象類處于繼承類層次結(jié)構(gòu)的較下層。B)抽象類刻畫了一組子類的操作通用接口。C)抽象類可以作為類直接使用。D)抽象類可以直接定義對(duì)象。(10)下列關(guān)于虛析構(gòu)函數(shù)說法不正確的是(B)。A)在析構(gòu)函數(shù)前加上關(guān)鍵字virtual,就說明了虛析構(gòu)函數(shù)。B)如果一個(gè)基類的析構(gòu)函數(shù)說明為虛析構(gòu)函數(shù),則它的派生類中的析構(gòu)函數(shù)須用virtual關(guān)鍵字說明后才是虛析構(gòu)函數(shù)。C)說明虛析構(gòu)函數(shù)的目的在于使用delete刪除一個(gè)對(duì)象時(shí),能保證析構(gòu)函數(shù)被正確地執(zhí)行。D)設(shè)置虛函數(shù)后,可以采用動(dòng)態(tài)聯(lián)編的方式選擇析構(gòu)函數(shù)。(11)編譯時(shí)多態(tài)性通過使用(B)獲得。A)繼承B)虛函數(shù)C)重載函數(shù)D)析構(gòu)函數(shù)(12)可以使用(A)來阻止基類的成員函數(shù)調(diào)用派生類中的虛函數(shù)。A)成員名限定B)指針C)引用D)關(guān)鍵字virtual(13)抽象類應(yīng)該含有(D)。A)至多一個(gè)虛函數(shù)B)至多一個(gè)虛函數(shù)是純虛函數(shù)C)至少一個(gè)虛函數(shù)D)至少一個(gè)虛函數(shù)是純虛函數(shù)(14)一個(gè)抽象類可以說明為(A)。A)指向抽象類對(duì)象的指針B)類成員數(shù)據(jù)C)抽象類的對(duì)象D)數(shù)組元素(15)對(duì)于抽象類的使用需要注意的地方,下列不正確的說法是:(C)A)抽象類只能用作其它類的基類,不能建立抽象類對(duì)象。B)抽象類不能用作參數(shù)類型,函數(shù)返回類型或顯式轉(zhuǎn)換的類型。C)定義抽象類時(shí)至少要定義一個(gè)虛函數(shù)。D)可以說明指向抽象類的指針和引用,此指針可以指向它的派生類,進(jìn)而可以實(shí)現(xiàn)多態(tài)性。(16)關(guān)于動(dòng)態(tài)聯(lián)編的說法,下列哪個(gè)不正確?(C)A)動(dòng)態(tài)聯(lián)編只能通過指針或引用標(biāo)識(shí)對(duì)象來操作虛函數(shù)。B)C++使用虛函數(shù)來指定哪些函數(shù)需要用動(dòng)態(tài)聯(lián)編方式處理。C)動(dòng)態(tài)聯(lián)編不能實(shí)現(xiàn)靜態(tài)類型檢查。D)動(dòng)態(tài)聯(lián)編能夠在運(yùn)行時(shí)根據(jù)其類型確認(rèn)調(diào)用哪個(gè)函數(shù)。(17)將一個(gè)類的成員函數(shù)盡可能地設(shè)置成虛函數(shù)總是有益的,下列設(shè)置虛函數(shù)必須注意的情況中,哪個(gè)是錯(cuò)誤的?(D)A)只有類的成員函數(shù)才能說明為虛函數(shù)。B)靜態(tài)成員函數(shù)不能是虛函數(shù)。C)構(gòu)造函數(shù)不能是虛函數(shù)。D)析構(gòu)函數(shù)不能是虛函數(shù)。(18)在派生類中重新定義虛函數(shù)時(shí)必須在(A)方面與基類保持一致。A)參數(shù)個(gè)數(shù)B)賦值C)參數(shù)名字D)操作內(nèi)容(19)以下哪個(gè)基類中的成員函數(shù)表示純虛函數(shù)(C)。A)virtualvoidvf(int)B)voidvf(int)=0;C)virtualvoidvf()=0D)virtualvoidvf(int){}(20)通過一個(gè)對(duì)象調(diào)用虛函數(shù)時(shí),C++系統(tǒng)對(duì)該調(diào)用采用(B)。A)動(dòng)態(tài)聯(lián)編B)靜態(tài)聯(lián)編C)不確定是哪種聯(lián)編D)函數(shù)重載參考答案:CCCACDDCBBBADACCDACB二.判斷正誤(1)函數(shù)參數(shù)個(gè)數(shù)和類型都相同,只是返回值類型不同,這不是重載函數(shù)。(×)(2)虛函數(shù)是為實(shí)現(xiàn)某種功能而假設(shè)的函數(shù),派生類的虛函數(shù)定義影響其基類,而基類的虛函數(shù)定義不影響其派生類。(×)(3)可以在類的內(nèi)部說明虛函數(shù),這時(shí)就可以定義一個(gè)虛的內(nèi)聯(lián)函數(shù)。(√)(4)空的虛函數(shù)與純虛函數(shù)都沒有函數(shù)體,因此空的虛函數(shù)與純虛函數(shù)在概念上是一樣的,只是叫法不一樣。(×)(5)只要基類的析構(gòu)函數(shù)被說明為虛函數(shù),則派生類的析構(gòu)函數(shù),無論是否使用virtual進(jìn)行說明,都自動(dòng)地成為虛構(gòu)函數(shù)。(√)(6)虛函數(shù)是一種virtual說明的成員函數(shù)。(√)(7)抽象類中只能有一個(gè)純虛函數(shù)。(×)(8)析構(gòu)函數(shù)不能說明為虛函數(shù)。(×)(9)程序中可以說明抽象類的指針或引用,但是不能說明抽象類的對(duì)象。(√)參考答案:××√×√√××√三.分析程序運(yùn)行結(jié)果1.#include<iostream.h>classbase{public:base(void){fc();}virtualvoidfc(void){cout<<"Inclassbase"<<endl;}virtual~base()=0{cout<<"Destructingbaseobject..."<<endl;}};classA:publicbase{public:A(void){fc();}voidf(void){fc();}~A(void){fd();}voidfd(void){cout<<"DestructorAobject..."<<endl;}};classB:publicA{public:B(void){};voidfc(void){cout<<"InclassB"<<endl;}~B(void){fc();}voidfd(void){cout<<"DestructorBobject"<<endl;}};voidmain(void){Bb;/*由于B類是A類的子類,A類是base類的子類,所以先調(diào)用base類的構(gòu)造函數(shù),再調(diào)用A類和B類的構(gòu)造函數(shù)*/cout<<endl;b.fc();//動(dòng)態(tài)聯(lián)編,調(diào)用B類的fc()函數(shù)cout<<endl;base*p=newA;//先調(diào)用base類構(gòu)造函數(shù),再調(diào)用A類的構(gòu)造函數(shù)deletep;//先調(diào)用A類的析構(gòu)函數(shù),再調(diào)用base類的析構(gòu)函數(shù)cout<<endl;//釋放對(duì)象b所占有的空間,分別調(diào)用BAbase類的析構(gòu)函數(shù)}參考答案:InclassbaseInclassbaseInclassBInclassbaseInclassbaseDestructorAobject...Destructingbaseobject...InclassBDestructorAobject...Destructingbaseobject...(2)#include<iostream.h>classC;classA{public:inta;A(inti){a=i;}virtualvoidprintOn(C&);};classB:publicA{public:intb;B(inti,intj):A(i){b=j;}virtualvoidprintOn(C&);};classC{friendvoidA::printOn(C&);friendvoidB::printOn(C&);inta,b,c;public:C(inti,intj,intk){a=i;b=j;c=k;}};voidA::printOn(C&t){cout<<"ClassAmembera="<<a<<endl;cout<<"ClassCmemberc="<<t.c<<endl;}voidB::printOn(C&t){cout<<"ClassBmemberb="<<b<<endl;cout<<"ClassCmemberc="<<t.c<<endl;}voidmain(){//考查內(nèi)容:指向基類對(duì)象的指針,可以指向其子類對(duì)象,//使用指針調(diào)用成員函數(shù)時(shí),根據(jù)對(duì)象不同而調(diào)用基類與其子類中相應(yīng)的同名函數(shù)Aa(10);Bb(10,20);Cc(10,20,30);A*p;p=&a;p->printOn(c);p=&b;p->printOn(c);}參考答案:ClassAmembera=10ClassCmemberc=30ClassBmemberb=20ClassCmemberc=30(3)#include<iostream.h>classbase{public:virtualvoida(){cout<<"a()inbase\n";}virtualvoidb(){cout<<"b()inbase\n";}virtualvoidc(){cout<<"c()inbase\n";}virtualvoidd(){cout<<"d()inbase\n";}virtualvoide(){cout<<"e()inbase\n";}virtualvoidf(){cout<<"f()inbase\n";}};classA:publicbase{public:virtualvoida(){cout<<"a()inA\n";}virtualvoidb(){cout<<"b()inA\n";}virtualvoidf(){cout<<"f()inA\n";}};classB:publicbase{public:virtualvoida(){cout<<"a()inB\n";}virtualvoidb(){cout<<"b()inB\n";}virtualvoidc(){cout<<"c()inB\n";}};classC:publicA,publicB{public:virtualvoida(){cout<<"a()inC\n";}virtualvoidd(){cout<<"d()inC\n";}};voidmain(){Ccc;A*pa=&cc;pa->a();//C類中有a(),調(diào)用pa->b();//C類中沒有b(),從其基類中尋找,先從A類中找,有則調(diào)用,無有則從B類中尋找pa->c();//C類中沒有c(),從其基類A和B中尋找,先從A類及其基類中找,有則調(diào)用;若無,則從B類及其基類中尋并調(diào)用pa->d();//C類中有d(),調(diào)用pa->e();//C類中沒有e(),先從A類及其基類base中尋找,從base中找到,調(diào)用pa->f();//C類中沒有f(),先從A類及其基類base中尋找,在A類中找到并調(diào)用//考查內(nèi)容:多態(tài)性,指向基類對(duì)象的指針可以指向其子類對(duì)象//這種指針調(diào)用函數(shù)時(shí)先從子類中尋找,如果有則調(diào)用,如果沒有則從基類中尋找}參考答案:a()inCb()inAc()inbased()inCe()inbasef()inA(4)#include<stdio.h>#include<iostream.h>classA{public: A(){}virtualvoidfunc(){cout<<"ConstructingA"<<endl;}~A(){}virtualvoidfund(){cout<<"DestructorA"<<endl;}};classB:publicA{public: B(){func();}virtualvoidfunc(){cout<<"ConstructingB"<<endl;}voidfun(){func();}~B(){fund();}};classC:publicB{public: C(){}voidfunc(){cout<<"ClassC"<<endl;}~C(){fund();}voidfund(){cout<<"DestructorC"<<endl;}};voidmain(){ Cc;//分別調(diào)用ABC類的構(gòu)造函數(shù)c.fun();//先從C類中查找,沒有則從其直接基類B中查找,找到并調(diào)用//構(gòu)造函數(shù)調(diào)用函數(shù)CBA}參考答案:ConstructingBClassCDestructorCDestructorA(5)#include<iostream.h>#include<string.h>classbase{char*p;public: base(intsz,char*bptr){p=newchar[sz];strcpy(p,bptr);cout<<"constructorbase"<<endl;}virtual~base(){delete[]p;cout<<"destructorbase\n";}};classderive:publicbase{char*pp;public:derive(intsz1,intsz2,char*bp,char*dptr):base(sz1,bp){ pp=newchar[sz2];strcpy(pp,dptr);cout<<"constructorderive"<<endl;}~derive(){delete[]pp;cout<<"destr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論