面向?qū)ο蟪绦蛟O(shè)計(jì)復(fù)習(xí)試題答案_第1頁
面向?qū)ο蟪绦蛟O(shè)計(jì)復(fù)習(xí)試題答案_第2頁
面向?qū)ο蟪绦蛟O(shè)計(jì)復(fù)習(xí)試題答案_第3頁
面向?qū)ο蟪绦蛟O(shè)計(jì)復(fù)習(xí)試題答案_第4頁
面向?qū)ο蟪绦蛟O(shè)計(jì)復(fù)習(xí)試題答案_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

語法擴(kuò)充1.1選擇題在C++中用(D)能夠?qū)崿F(xiàn)將參數(shù)值帶回。2)數(shù)組b)指針c)引用d)上述ABC都可考慮函數(shù)原型voidtest(inta,intb=7,char*ch="*"),下面的函數(shù)調(diào)用中,屬于不合法調(diào)用的是:(C)A)test(5)B)test(5,8) C)test(6,"#") D)test(0,0,"*");已知:intm=10;下列表示引用的方法中,正確的是:(C)A)int&Z;B)int&t=10; C)int&X=m; D)float&f=&m;下列不是函數(shù)重載所要求的條件是:(D)用函數(shù)名相同 B)參數(shù)個(gè)數(shù)不同。參數(shù)類型不同 功函數(shù)返回值類型不同在C++中執(zhí)行以下4條語句后輸出rad值為:(C)staticinthot=200;int&rad=hot;hot=hot+100;cout<<rad<<endl;A)0B)100C)300 D)200系統(tǒng)在調(diào)用重載函數(shù)時(shí),不能作為確定哪個(gè)重載函數(shù)被調(diào)用的依據(jù)是:(D)A)參數(shù)個(gè)數(shù) 8)參數(shù)類型 。函數(shù)名稱 功函數(shù)的返回值類型對(duì)C++語言和C語言的兼容性,描述正確的是:(A)A)C++兼容C B)C++部分兼容C C)C++不兼容C D)C兼容C++在C++中使用流進(jìn)行輸入輸出,其中用于屏幕輸出的對(duì)象是:(C)A)cerrB)cinC)coutD)cfile對(duì)使用關(guān)鍵字new所開辟的動(dòng)態(tài)存儲(chǔ)空間,釋放時(shí)必須使用(C)A)freeB)createC)deleteD)realse在函數(shù)調(diào)用時(shí),如某一默認(rèn)參數(shù)要指明一個(gè)特定值,則有(A)A)其之前所有參數(shù)都必須賦值 B)其之后所有參數(shù)都必須賦值C)其前、后所有參數(shù)都必須賦值 D)其前、后所有參數(shù)都不必賦值下列哪個(gè)類型函數(shù)不適合聲明為內(nèi)聯(lián)函數(shù)(A)用函數(shù)體語句較多 8)函數(shù)體語句較少。函數(shù)執(zhí)行時(shí)間較短 功函數(shù)執(zhí)行時(shí)間過長intFunc(int,int);不可與下列哪個(gè)函數(shù)構(gòu)成重載(B)A)intFunc(int,int,int); B)doubleFunc(int,int);C)doubleFunc(double,double);D)doubleFunc(int,double);下面的哪個(gè)保留字不能作為函數(shù)的返回類型(C)A)voidB)intC)newD)long一個(gè)函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,選用(A)。A.內(nèi)聯(lián)函數(shù) B.重載函數(shù) C.遞歸函數(shù) D.嵌套函數(shù)已知函數(shù)£的原型為:voidf(int&a,char*b);變量s,t的定義是:ints;chart[尸"ABCD";把s和t分別作為第一參數(shù)和第二參數(shù)來調(diào)用函數(shù)£,正確的調(diào)用語句是(C)Af(&s,&t);Bf(&s,t);Cf(s,t);Df(s,&t);若定義cin>>str;當(dāng)輸入MicrosoftVisualStudio6.0!所得結(jié)果是str二(B)。MicrosoftVisualStudio6.0!MicrosoftMicrosoftVisualMicrosoftVisualStudio6.0.函數(shù)模板(C)。A、代表某一具體函數(shù)B、與模板函數(shù)是同一個(gè)函數(shù)C、與某一個(gè)具體的數(shù)據(jù)類型連用D、是模板函數(shù)實(shí)例化的結(jié)果在C++中,關(guān)于下列設(shè)置參數(shù)默認(rèn)值的描述中,正確的是(C)A、不允許設(shè)置參數(shù)的默認(rèn)值B、設(shè)置參數(shù)默認(rèn)值只能在定義函數(shù)時(shí)設(shè)置C、設(shè)置參數(shù)默認(rèn)值時(shí),應(yīng)該是先設(shè)置右邊的再設(shè)置左邊的D、設(shè)置參數(shù)默認(rèn)值時(shí),應(yīng)該全部參數(shù)都設(shè)置下列表示引用的方法中,(A)是正確的。已知:k=1000;A、int&x=k; B、char&y;C、int&z=1000; D、float&t=&k;有如下模板定義:template<classT>Tfun(Tx,Ty){returnx*x+y*y;}在下列對(duì)fun的調(diào)用中,錯(cuò)誤的是:(C)A)fun(2,8) B)fun(2.0,8.2) C)fun(2.3,8)D)fun(‘2’,’8’)通常情況下,函數(shù)模板中的類型參數(shù)個(gè)數(shù)不能是(A)A)0個(gè)B)1個(gè)C)2個(gè)D)3個(gè)填空題1、假定有如下定義:intx;,若要將整型變量y定義為變量x的引用,則應(yīng)使用的定義語句是int&y=x;。具有相同函數(shù)名但具有不同參數(shù)表的函數(shù)稱為重載函數(shù)。(2、在進(jìn)行函數(shù)調(diào)用時(shí),將把參數(shù)的值傳遞給值參數(shù),把參數(shù)的_地址_傳遞給引用參數(shù)。3、執(zhí)行完下列三條語句后,指針變量c指向_『。Inta,b,*c=&a;int*&p=c;p=&b;4、假設(shè)有如下函數(shù)定義:voidFun(intx,inty=100);則語旬Fun⑸語句―Fun(5,100)_等價(jià)。5、在一個(gè)C++程序中,每個(gè)變量都必須遵循—先定義后使用—的原則。6、下面是一個(gè)求數(shù)組元素之和的程序。主程序中定義并初始化了一個(gè)數(shù)組,然后計(jì)算該數(shù)組各元素之和,并輸出結(jié)果。函數(shù)TotalSum計(jì)算數(shù)組元素之和。請(qǐng)完成下列程序。#include<iostream.h>intTotalsum(intarray[],intlen);voidmain。(inta[5]={2,3,6,8,10};—intTotal;Total=Totalsum(a,5);cout<<"Sumofarray:"<<Total<<endl;}intTotalsum(intarray[],intlen){intsum=0 ;for(intI=0;I<len;I++)sum+=array|T|;returnsum;}7、下面的函數(shù)Fun未使用中間變量實(shí)現(xiàn)了對(duì)兩個(gè)數(shù)的交換,請(qǐng)完成下列函數(shù)的定義。VoidFun(int&x,int&y){x+=y;y=——x-y ;x=X-y;}8、定義一個(gè)函數(shù)時(shí),若只允許函數(shù)體訪問形參的值而不允許修改它的值,則應(yīng)把該形參聲明為—常量一即在該形參聲明的前面加上_const_關(guān)鍵字進(jìn)行修飾。9、在一個(gè)函數(shù)的定義或聲明前加上關(guān)鍵字一inline_時(shí),該函數(shù)就聲明為內(nèi)聯(lián)函數(shù)。簡答題人、.內(nèi)聯(lián)函數(shù)的含義在函數(shù)前加上關(guān)鍵字inline說明了一個(gè)內(nèi)聯(lián)函數(shù),這使一個(gè)函數(shù)在程序行里進(jìn)行代碼擴(kuò)展而不被調(diào)用。這樣的好處是減少了函數(shù)調(diào)用的開銷,產(chǎn)生較快的執(zhí)行速度。但是由于重復(fù)編碼會(huì)產(chǎn)生較長代碼,所以內(nèi)聯(lián)函數(shù)通常都非常小。如果一個(gè)函數(shù)在類說明中定義,則將自動(dòng)轉(zhuǎn)換成內(nèi)聯(lián)函數(shù)而無需用inline說明。8、.函數(shù)重載的含義在同一作用域范圍內(nèi),相同的函數(shù)名通過不同的參數(shù)類型或參數(shù)個(gè)數(shù)可以定義幾個(gè)函數(shù),編譯時(shí)編譯器能夠識(shí)別實(shí)參的個(gè)數(shù)和類型來決定該調(diào)用哪個(gè)具體函數(shù)。需要注意的是,如果兩個(gè)函數(shù)僅僅返回類型不同,則編譯時(shí)將會(huì)出錯(cuò),因?yàn)榉祷仡愋筒蛔阋蕴峁┳銐虻男畔⒁允咕幾g程序判斷該使用哪個(gè)函數(shù)。所以函數(shù)重載時(shí)必須是參數(shù)類型或者數(shù)量不同。C、引用與指針的區(qū)別口、內(nèi)聯(lián)函數(shù)使用上的限制E、定義帶默認(rèn)參數(shù)值函數(shù)的規(guī)則F、指針與常量的關(guān)系1.4程序閱讀題1)寫出下列程序的運(yùn)行結(jié)果。#include<iostream.h>voidmainQ(intx;int&p=x;x=10;p=x+10;cout<<x<<","<<p<<endl;)結(jié)果:20,202)寫出下列程序的運(yùn)行結(jié)果。#include<iostream.h>intf(inta)(return++a;)intg(int&a)(return++a;)voidmainQ(intm=0,n=0;m+=f(g(m));n+=f(f(n));cout<<"m="<<m<<endl;cout<<"n="<<n<<endl;)結(jié)果:m=3n=23)寫出下列程序的運(yùn)行結(jié)果。#include<iostream.h>voidFunQ(intnum=20;cout<<"TheFun'snumis"<<num<<endl;voidmainQintnum=10;cout<<"Themain'snumis"<<num<<endl;Fun();(intnum=30;cout<<"TheField'snumis"<<num<<endl;)cout<<"Themain'snumis"<<num<<endl;)結(jié)果:Themain'snumis10TheFun'snumis20TheField'snumis30Themain'snumis10類和對(duì)象2.1選擇題下列的各類函數(shù)中,不是類的成員函數(shù)。(C)A)構(gòu)造函數(shù) B)析構(gòu)函數(shù) C)友元函數(shù) D)拷貝初始化構(gòu)造函數(shù)作用域運(yùn)算符“::”的功能是:(B)A)標(biāo)識(shí)作用域的級(jí)別的 B)指出作用域的范圍的C)給定作用域的大小的 D)標(biāo)識(shí)成員是屬于哪個(gè)類的已知:printO函數(shù)是一個(gè)類的常成員函數(shù),它無返回值,下列表示中,是正確的。(A)A)voidprint()const;B)constvoidprint。;C)voidconstprint。: D)voidprint(const);在類定義的外部,可以被訪問的成員有(C)A)所有類成員 B)private的類成員C)public的類成員 D)public或private的類成員關(guān)于類和對(duì)象不正確的說法是:(C)A)類是一種類型,它封裝了數(shù)據(jù)和操作 B)對(duì)象是類的實(shí)例C)一個(gè)類的對(duì)象只有一個(gè) D)一個(gè)對(duì)象必屬于某個(gè)類在C++中實(shí)現(xiàn)封裝是借助于(B)A)枚舉 B)類C)數(shù)組 功函數(shù)定義析構(gòu)函數(shù)時(shí),應(yīng)該注意:(C)A)其名與類名完全相同 B)返回類型是void類型C)無形參,也不可重載 功函數(shù)體中必須有delete語句類claseCC1的說明如下,錯(cuò)誤的語句是:(A)claseCC1{TOC\o"1-5"\h\zinta=2; 〃(A)CC1(); 〃⑻public:CC1(intval); 〃(C)?CC1(); 〃(D)};類的指針成員的初始化是通過函數(shù)完成的,這個(gè)函數(shù)通常是:(B)A)析構(gòu)函數(shù) B)構(gòu)造函數(shù) C)其它成員函數(shù) D)友元函數(shù)關(guān)于構(gòu)造函數(shù)的說法,不正確的是:(A)A)沒有定義構(gòu)造函數(shù)時(shí),系統(tǒng)將不會(huì)調(diào)用它 B)其名與類名完全相同C)它在對(duì)象被創(chuàng)建時(shí)由系統(tǒng)自動(dòng)調(diào)用 D)沒有返回值通??截悩?gòu)造函數(shù)的參數(shù)是:(C)A)對(duì)象名 B)對(duì)象的成員名 C)對(duì)象的引用名 D)對(duì)象的指針名關(guān)于成員函數(shù)特征的描述中,錯(cuò)誤的是:(A)A)成員函數(shù)一定是內(nèi)聯(lián)函數(shù) B)成員函數(shù)可以重載C)成員函數(shù)可以設(shè)置參數(shù)的默認(rèn)值 D)成員函數(shù)可以是靜態(tài)的下列關(guān)于構(gòu)造函數(shù)的描述中,錯(cuò)誤的是:(D)A)構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù); B)構(gòu)造函數(shù)在定義類對(duì)象時(shí)自動(dòng)執(zhí)行C)構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù); D)構(gòu)造函數(shù)不可以重載有如下類聲明“classA{intx; };",則A類的成員x是:(B)A)公有數(shù)據(jù)成員 B)私有數(shù)據(jù)成員 C)公有成員函數(shù) D)私有成員函數(shù)類TM和類TN是兩個(gè)獨(dú)立的類,那么類TM中哪種形式的數(shù)據(jù)成員一定是不允許的:(C)A)TM*aB)TN&aC)TMaD)TNa;以下關(guān)于this指針的敘述中正確的是:(D)A)任何與類相關(guān)的函數(shù)都有this指針; B)類的成員函數(shù)都有this指針;C)類的友員函數(shù)都有this指針; D)類的非靜態(tài)成員函數(shù)才有this指針;.關(guān)于類模板的說法正確的是:(B)A)類模板的主要作用是生成抽象類B)類模板實(shí)例化時(shí),編譯器將根據(jù)給出的模板實(shí)參生成一個(gè)類C)在類模板中的數(shù)據(jù)成員具有同樣類型D)類模板中的成員函數(shù)沒有返回值.以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是:(C)A)publicB)privateC)staticD)protected?類的私有成員可在何處訪問(D)A)通過子類的對(duì)象訪問 B)本類及子類的成員函數(shù)中C)通過該類對(duì)象訪問 D)本類的成員函數(shù)中.如果沒有為一個(gè)類定義任何構(gòu)造函數(shù)的情況下,下列描述正確的是:(A)A)編譯器總是自動(dòng)創(chuàng)建一個(gè)不帶參數(shù)的構(gòu)造函數(shù) B)這個(gè)類沒有構(gòu)造函數(shù)

D)該類不能通過編譯C)D)該類不能通過編譯.一個(gè)類可包含析構(gòu)函數(shù)的個(gè)數(shù)是:(B)A)0個(gè)B)1個(gè)C)0個(gè)或1個(gè) D)0個(gè)或多個(gè).一個(gè)類可包含構(gòu)造函數(shù)的個(gè)數(shù)是:(D)A)0個(gè)B)0個(gè)或1個(gè) C)0個(gè)或多個(gè) D)1個(gè)或多個(gè).this指針存在的目的是:(B)A)保證基類公有成員在子類中可以被訪問B)保證每個(gè)對(duì)象擁有自己的數(shù)據(jù)成員,但共享處理這些數(shù)據(jù)成員的代碼C)保證基類保護(hù)成員在子類中可以被訪問D)保證基類私有成員在子類中可以被訪問.下列關(guān)于類的權(quán)限的描述錯(cuò)誤的是:(A)A)類本身的成員函數(shù)只能訪問自身的私有成員B)類的對(duì)象只能訪問該類的公有成員C)普通函數(shù)不能直接訪問類的公有成員,必須通過對(duì)象訪問D)一個(gè)類可以將另一個(gè)類的對(duì)象作為成員.設(shè)類A將其它類對(duì)象作為成員,則建立A類對(duì)象時(shí),下列描述正確的是:(B)A)A類構(gòu)造函數(shù)先執(zhí)行 B)成員構(gòu)造函數(shù)先執(zhí)行C)兩者并行執(zhí)行 D)不能確定.假定有類AB,有相應(yīng)的構(gòu)造函數(shù)定義,能正確執(zhí)行“ABa⑷,b(5),c[3],*p[2]={&a,&b};”語句,請(qǐng)問執(zhí)行完此語句后共調(diào)用該類構(gòu)造函數(shù)的次數(shù)為(C)A)3B)4 C)5 D)6A)3B)4 C)5 D)6拷貝構(gòu)造函數(shù)的作用是(C)。A.進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換 B.用對(duì)象調(diào)用成員函數(shù)C.用對(duì)象初始化對(duì)象 D.用一般類型的數(shù)據(jù)初始化對(duì)象下列靜態(tài)數(shù)據(jù)成員的特性中,錯(cuò)誤的是(D)。A.靜態(tài)數(shù)據(jù)成員的聲明以關(guān)鍵字static開頭B.靜態(tài)數(shù)據(jù)成員必須在文件作用域內(nèi)初始化C.引導(dǎo)數(shù)據(jù)成員時(shí),要在靜態(tài)數(shù)據(jù)成員前加(類名)和作用域運(yùn)算符D.靜態(tài)數(shù)據(jù)成員不是類所有對(duì)象共享的通過指針訪問類對(duì)象成員的方法是(D)。A.:: B.;C..D.->靜態(tài)成員函數(shù)沒有(B)。A.返回值B.this指針C.指針參數(shù) D.返回類型在下列關(guān)鍵字中,用于說明類中公有成員的是(A)。A.public; B.private;C.protected;D.friend不是構(gòu)造函數(shù)的特征(D)。A.構(gòu)造函數(shù)的函數(shù)名與類名相同; B.構(gòu)造函數(shù)可以重載;C.構(gòu)造函數(shù)可以設(shè)置缺省參數(shù); D.構(gòu)造函數(shù)必須指定類型說明。是析構(gòu)函數(shù)的特征(A)。A.一個(gè)類中只能定義一個(gè)析構(gòu)函數(shù); B.析構(gòu)函數(shù)名與類名不同;C.析構(gòu)函數(shù)的定義只能在類體內(nèi); D.析構(gòu)函數(shù)可以有一個(gè)或多個(gè)參數(shù)。關(guān)于成員函數(shù)特征的下述描述中,(A)是錯(cuò)誤的。A.成員函數(shù)一定是內(nèi)聯(lián)函數(shù); B.成員函數(shù)可以重載;C.成員函數(shù)可以設(shè)置參數(shù)的缺省值; D.成員函數(shù)可以是靜態(tài)的。下述靜態(tài)數(shù)據(jù)成員的特性中,(D)是錯(cuò)誤的。A.說明靜態(tài)數(shù)據(jù)成員時(shí)前邊要加修飾符static;B.靜態(tài)數(shù)據(jù)成員要在類體外進(jìn)行初始化;C.引用靜態(tài)數(shù)據(jù)成員時(shí),要在靜態(tài)數(shù)據(jù)成員名前加<類名〉和作用域運(yùn)算符;口.靜態(tài)數(shù)據(jù)成員不是所有對(duì)象所共用的。填空題1、在撤銷類的對(duì)象時(shí),C++程序?qū)⒆詣?dòng)調(diào)用該對(duì)象的<析構(gòu)__函數(shù)。2、類中的構(gòu)造函數(shù)是一個(gè)特殊的成員函數(shù),它由類的對(duì)象—自動(dòng)_調(diào)用,它的作用是—為對(duì)象分配內(nèi)存,數(shù)據(jù)成員初始化__。3、對(duì)類中的成員函數(shù)和屬性的訪問是通過一public—、一protected―和 private__這3個(gè)關(guān)鍵字來控制的。4、__delete__運(yùn)算符刪除new運(yùn)算符所動(dòng)態(tài)分配的內(nèi)存空間。5、假定用戶沒有給一個(gè)名為MyClass的類定義析構(gòu)函數(shù),則系統(tǒng)為其定義的默認(rèn)析構(gòu)函數(shù)形式.為MyClass。。6、類中構(gòu)造函數(shù)有—一個(gè)或多一個(gè),析構(gòu)函數(shù)有一―一個(gè)。7、類是對(duì)具有共同屬性和行為的一類事物的抽象描述,共同屬性被描述為類中的__!!成員—,共同行為被描述為類中的一成員函數(shù)_。8、若要把類FriendClass定義為類MyClass的友元類,則應(yīng)在類MyClass的定義中加入語句_friendclassFriendClass;。9、在結(jié)構(gòu)定義中,數(shù)據(jù)和成員函數(shù)默認(rèn)權(quán)限是__?生—。在類定義中數(shù)據(jù)和成員函數(shù)默認(rèn)權(quán)限是private。10、在下面程序的橫線處填上適當(dāng)?shù)恼Z句,使類型該程序執(zhí)行結(jié)果為10。#include<iostream.h>classMyClass(pub1ic:MyClass(inta){x=a;} //為x置值intGetNum(){returnx;}//取x值private:intx;};voidmain(){Myclassmy(10);Cout<<my.GetNum()<<end;}11、完成下面的類定義。ClassMyClass{public:MyClass(){x=0;}friendintGetNum(MyClassmy);private:intx;};intGetNum(MyClassmy){___returnmy.x;}12、__new__運(yùn)算符對(duì)指定類型對(duì)象動(dòng)態(tài)分配內(nèi)存并返回該類型的一指針_。13、若要把函數(shù)voidFriendFunction()定義為類MyClass的友元函數(shù),則應(yīng)在類MyClass的定義中加入語句一friendvoidFriendFunction();。14、類的具體表現(xiàn)是通過定義_對(duì)象—來操作的。15、在定義類的對(duì)象時(shí),C++程序?qū)⒆詣?dòng)調(diào)用該對(duì)象的一構(gòu)造—函數(shù)初始化對(duì)象自身。16、一般情況下,按照面向?qū)ο蟮囊?,把類中的?shù)據(jù)成員(屬性)定義為—四巫—權(quán)限,而把成員函數(shù)(方法)定義為—public—權(quán)限。17、在類中定義和實(shí)現(xiàn)的函數(shù)稱為_內(nèi)聯(lián)函數(shù)一。18、非成員函數(shù)應(yīng)聲明為類的—友元函數(shù)—才能訪問這個(gè)類的private成員。簡答題A、類的含義B、構(gòu)造函數(shù)的特點(diǎn)C、拷貝構(gòu)造函數(shù)的調(diào)用D、析構(gòu)函數(shù)的定義及其特點(diǎn)E、靜態(tài)成員的分類及各自的特點(diǎn)程序閱讀題1)寫出下列程序的運(yùn)行結(jié)果。#include<iostream.h>classMyClass(charch;public:MyClass();MyClass(charcharacter);voidPrint。;?MyClass。;};MyClass::MyClass()(cout<<"Thisisaconstructor!"<<endl;ch='a';)MyClass::MyClass(charcharacter)(cout<<"Thisisaconstructor!"<<endl;ch=character;)voidMyClass::Print()(cout<<"Thevalueofchis"<<ch<<endl;)MyClass::?MyClass。(cout<<"Thisisadestructor!"<<endl;)voidmain()(MyClassfirst,second('b');first.Print();second.Print。;)運(yùn)行結(jié)果:Thisisaconstructor!Thisisaconstructor!ThevalueofchisaThevalueofchisbThisisadestructor!Thisisadestructor!2)寫出下列程序的運(yùn)行結(jié)果#include<iostream.h>classMyClass(public:MyClass。;voidPrint。;?MyClass。;private:intI;staticintj;};intMyClass::j=0;MyClass::MyClass()(cout<<"Thisisconstructor!"<<endl;j+=10;)voidMyClass::Print()(cout<<"Thevalueofjis"<<J<<endl;)MyClass::?MyClass()(cout<<"Thisisadestructor!"<<endl;)voidmain()(MyClassfirst,second;first.Print();second.Print();)Thisisconstructor!Thisisconstructor!Thevalueofjis20Thevalueofjis20Thisisadestructor!Thisisadestructor!繼承與派生3.1選擇題.在C++中,類與類之間的繼承關(guān)系具有(c)修自反性B)對(duì)稱性 C)傳遞性 D)反對(duì)稱性.在公有繼承的情況下,基類的成員(私有的除外)在派生類中的訪問權(quán)限(B)A)受限制 B)保持不變 C)受保護(hù) D)不受保護(hù).按解釋中的要求在下列程序劃線處填入的正確語句是:(C)#include<iostream.h>classBase{public:voidfunQ{cout<<nBase::funn<<endl;});classDerived:publicBase{public:voidfun(){ //在此空格處調(diào)用基類的函數(shù)fun()cout<<"Derived::fun"<<endl;}};A)fun();B)Base.fun();C)Base::fun();D)Base->fun();A)fun();B)Base.fun();.在保護(hù)繼承的情況下,基類的成員(私有的除外)在派生類中的訪問權(quán)限(C)A)受限制 B)保持不變 C)受保護(hù) D)不受保護(hù).下面描述中,表達(dá)錯(cuò)誤的是:(B)A)公有繼承時(shí),基類中的public成員在派生類中仍是public的B)公有繼承時(shí),基類中的private成員在派生類中仍是private的C)公有繼承時(shí),基類中的protected成員在派生類中仍是protected的D)私有繼承時(shí),基類中的public成員在派生類中是private的.下列虛基類的聲明中,正確的是:(B)A)classvirtualB:publicAB)classB:virtualpublicAC)classB:publicAvirtualD)virtualclassB:publicA.C++設(shè)置虛基類的目的是(A)A)消除二義性 B)簡化程序 C)提高運(yùn)行效率 D)減少目標(biāo)代碼classX{inta;public:X(intx=0){a=x;}};classY:publicX{intb;public:Y(intx=0,inty=0):X(y)){b=x;}};下列語句組中出現(xiàn)語法錯(cuò)誤的是(D)A.X*pa=newY(1,2);B.Xa1=丫(1,3);C.Yb1(2,3);X&a3=b1;D.Xa4(10);Yb2=a4;classBase{public:inti;Base(intt):i(t){ }};classDerived:protectedBase{Baseb;intj;public:Derived(intt);};在構(gòu)造函數(shù)Derived的下列定義中,正確的是(B)A.Derived::Derived(intt):b(t),j(t){}B.Derived::Derived(intt):b(t),Base(t),j(t){}C.Derived::Derived(intt):Base(t),j(t){}D.Derived::Derived(intt):i(t),b(t),j(t){}.在哪種派生方式中,派生類可以訪問基類中的protected成員(B)A)public和privateB)public、protected和privateC)protected和privateD)僅protected在C++中,類與類之間的繼承關(guān)系具有(C)A)自反性 B)對(duì)稱性 C)傳遞性 D)反對(duì)稱性下列關(guān)于類的繼承描述中,(A)是錯(cuò)誤的A)派生類可以訪問基類的所有數(shù)據(jù)成員,也能調(diào)用基類的所有成員函數(shù)B)派生類也是基類,但基類不一定具有派生類的全部屬性和方法C)繼承描述類的層次關(guān)系,派生類可以具有與基類相同的屬性和方法D)一個(gè)基類可以有多個(gè)派生類,一個(gè)派生類可以有多個(gè)基類.當(dāng)一個(gè)派生類僅有protected繼承一個(gè)基類時(shí),基類中的所有公有成員成為派生類的(C)A)public成員B)private成員C)protected成員 D)友元當(dāng)一個(gè)派生類私有繼承一個(gè)基類時(shí),基類中的所有公有成員和保護(hù)成員成為派生類的(B)A)public成員B)private成員C)protected成員D)友元不論派生類以何種方法繼承基類,都不能使用基類的(B)A)public成員B)private成員C)protected成員D)public成員和protected成員在創(chuàng)建派生類對(duì)象時(shí),構(gòu)造函數(shù)的執(zhí)行順序是(D)A)對(duì)象成員構(gòu)造函數(shù)、基類構(gòu)造函數(shù)、派生類本身的構(gòu)造函數(shù)B)派生類本身的構(gòu)造函數(shù)、基類構(gòu)造函數(shù)、對(duì)象成員構(gòu)造函數(shù)C)基類構(gòu)造函數(shù)、派生類本身的構(gòu)造函數(shù)、對(duì)象成員構(gòu)造函數(shù)D)基類構(gòu)造函數(shù)、對(duì)象成員構(gòu)造函數(shù)、派生類本身的構(gòu)造函數(shù)下列虛基類的聲明中,正確的是(D)。A)classvirtualB:publicAB)virtualclassB:publicAC)classB:publicAvirtualD)classB:virtualpublicA下面敘述錯(cuò)誤的是(A)。A)基類的protected成員在派生類中仍然是protected的B)基類的protected成員在public派生類中仍然是protected的C)基類的protected成員在private派生類中是private的D)基類的protected成員不能被派生類的對(duì)象訪問下列說法中錯(cuò)誤的是(A)。A)保護(hù)繼承時(shí)基類中的public成員在派生類中仍是public的B)公有繼承時(shí)基類中的private成員在派生類中仍是private的C)私有繼承時(shí)基類中的public成員在派生類中是private的D)保護(hù)繼承時(shí)基類中的public成員在派生類中是protected的關(guān)于多繼承二義性的描述中,錯(cuò)誤的是(B)。A)一個(gè)派生類的兩個(gè)基類中都有某個(gè)同名成員,在派生類中對(duì)這個(gè)成員的訪問可能出現(xiàn)二義性B)解決二義性的最常用的方法是對(duì)成員名的限定法C)基類和派生類中同時(shí)出現(xiàn)的同名函數(shù),也存在二義性問題D)一個(gè)派生類是從兩個(gè)基類派生出來的,而這兩個(gè)基類又有一個(gè)共同的基類,對(duì)該基類成員進(jìn)行訪問時(shí),可能出現(xiàn)二義性下面敘述錯(cuò)誤的是(C)。A)派生類可以使用private派生B)對(duì)基類成員的訪問必須是無二義性的C)基類成員的訪問能力在派生類中維持不變D)賦值兼容規(guī)則也適用于多繼承的組合派生類的構(gòu)造函數(shù)的成員初始化列表中,不能包含(C)。A)基類的構(gòu)造函數(shù)B)派生類中子對(duì)象的初始化C)基類中子對(duì)象的初始化D)派生類中一般數(shù)據(jù)成員的初始化下面(B)的敘述不符合賦值兼容規(guī)則。A)派生類的對(duì)象可以賦值給基類的對(duì)象B)基類的對(duì)象可以賦值給派生類的對(duì)象C)派生類的對(duì)象可以初始化基類的引用D)派生類的對(duì)象的地址可以賦值給指向基類的指針.下列虛基類的聲明中,正確的是:(B)A)classvirtualB:publicAB)classB:virtualpublicAC)classB:publicAvirtualD)virtualclassB:publicA.C++設(shè)置虛基類的目的是(A)A)消除二義性 B)簡化程序 C)提高運(yùn)行效率 D)減少目標(biāo)代碼3.2填空題1、垂直訪問時(shí),保護(hù)成員的訪問控制權(quán)限與_公有—成員相同。2、利用繼承能夠?qū)崿F(xiàn)_代碼復(fù)用__。這種實(shí)現(xiàn)縮短了程序的開發(fā)時(shí)間,促使開發(fā)人員復(fù)用已經(jīng)測試和調(diào)試好的高質(zhì)量軟件。3、派生類對(duì)基類的繼承有三種方式:一public一、 protected和 private―。4、多繼承情況下,派生類的構(gòu)造函數(shù)的執(zhí)行順序取決于一定義—派生類時(shí)所指定的各基類的順序。5、C++提供的_多繼承—機(jī)制允許一個(gè)派生類繼承多個(gè)基類,即使這些基類是相互無關(guān)的。6、派生類可以調(diào)用其_定義__中不具備的數(shù)據(jù)和操作。7、對(duì)基類數(shù)據(jù)成員的初始化必須在派生類構(gòu)造函數(shù)中的—初始化列表一處執(zhí)行。8、如果類Alpha繼承了類Beta,則類Alpha稱為一派生―類,類Beta稱為—基―類。9、己知下面的程序框架,按注釋中的提示補(bǔ)充細(xì)節(jié)。#include<iostream.h>classplanet(protected:doubledistance;―〃行星距太陽的距離intrevolve;〃行星的公轉(zhuǎn)周期public:planet(doubled,intr)(distance=d;revolve=r;)};classearth:publicplanet(doublecircumference;〃地球繞太陽公轉(zhuǎn)的軌道周長public:〃定義構(gòu)造函數(shù)earth(doubled,intr),并計(jì)算地球繞太陽公轉(zhuǎn)的軌道周長?!俣?circumnference=2*d*3.1416earth(doubled,intr):planet(d,r){__circumnference=2*d*3.1416;}//定義$卜。川0函數(shù)顯示所有信息void show。 {cout<<”distanceis”<<distance<<”miles,revolveis”<<revolve<<”days”<<endl;cou<<”circumferenceis"<<circumference<<endl;}};voidmain(){earthob(9300000,365);ob.show();}10、設(shè)置虛基類的目的是—為了消除二義性__,可通過―virtual 標(biāo)識(shí)虛基類。11、若多繼承時(shí),多個(gè)基類中擁有一個(gè)同名的成員,則—不能—用調(diào)整訪問權(quán)限確定對(duì)該成員的訪問。12、根據(jù)基類的定義和測試程序,完成下面派生類的定義。ClassPoint(public:Point(intI=0,intj=0){X=I;Y=j;}voidMove(intxOff,intyOff){X+=xOff;Y+=yOff;}intGetX(){returnX;}intGetY(){returnY;}private:intX,Y;};classRectangle:privatePoint{public:Rectangle(intx,inty,intw,inth)_:Point(x,y){W=w;H=h;}voidMove(intxOff,intyOff){_Point:Move(xOff,yOff);—}intGetX(){_returnPoint:GetX();_}intGetY(){returnPoint:GetY();_}intGetW(){returnW;—}intGetH(){_returnH;_}private:intW,H;}#include<iostream.h>#include<math.h>voidmain(){Rectanglerect(1,2,3,4);rect.Move(5,6);cout<<“Thedataofrect(X,Y,W,H):(“<<rect.GetX()<<“,”<<rect.GetY()<<“,”<<rect.GetW()<<“,”<<rect.GetH()<<“)”<<endl;13、多繼承可以視為是_單繼承—的擴(kuò)展。14、在劃線處填上適當(dāng)?shù)恼Z句,完成下列程序。#include<math.h>classPoint{public:point(doublea,doubleb,doublec){X=a;Y=b;Z=c;}doubleGetx(){returnX;}doubleGety(){returnY;}doubleGetz(){returnZ;}private:—doubleX,Y;protected:doubleZ;};classLine:publicPoint(public:Line(doublea,doubleb,doublec,doubled)_:Point(a,b,c){K=d;}voidshow。{cout<<Getx()<<endl;cout<<Gety()<<""<<.<<<endl;cout<<Getz()<<““<<Z<<endl;cout<<K<<endl;}private:doublek;};voidmain。{Lineobj(1.2,3.4,5.6,7.8);obj.show();}15、類繼承中,缺省的繼承方式是—private―。16、當(dāng)用protected繼承從基類派生一個(gè)類時(shí),基類的public成員成為派生類的—protected 成員,protected成員成為派生類的protected成員。18、—公有派生一類的對(duì)象可作為―基—類的對(duì)象處理。19、指向基類的對(duì)象的指針變量也可以指向一公有派生類_的對(duì)象。20、類之間的“有“關(guān)系代表_組合___,”是"關(guān)系代表—繼承_。簡答題A、派生類的定義及其特點(diǎn)B、單繼承和多繼承的概念及其關(guān)系C、繼承方式的種類及其各自的特點(diǎn)D、在繼承中構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用規(guī)則F、賦值兼容原則G、類模板和模板類的含義及其關(guān)系讀程序題1、寫出下列程序的運(yùn)行結(jié)果。#include<iostream.h>classBase(public:voidWho(){cout<<"classBase"<<endl;}};classDerived1:publicBase{public:voidWho(){cout<<"classDerived1"<<endl;}};classDerived2:publicBase{public:voidWho(){cout<<"classDerived2"<<endl;}};voidmain。{Baseobj1,*p;Derived1obj2;Derived2obj3;p=&obj1;p->Who();p=&obj2;p->Who();p=&obj3;p->Who();obj2.Who();obj3.Who();}答案:classBaseclassBaseclassBaseclassDerived1classDerived22、寫出下列程序的運(yùn)行結(jié)果。#include<iostream.h>classinstrument{public:voiddisplay()const{cout<<"instument::display."<<endl;}};classpiano:publicinstrument(public:voiddisplay()const{cout<<"piano::display."<<endl;}};classguitar:publicinstrument{public:voiddisplay()const{cout<<"guitar::display."<<endl;}};voidtone(instrument&I){1.display。;};voidmain(){guitarguitar1;tone(guitar1);pianopiano1;tone(piano1);}答案instument::display.instument::display.3、寫出下列程序的運(yùn)行結(jié)果。#include<iostream.h>classA{public:A(chari){cout<<"A'scons."<<i<<endl;}~A(){cout<<"A'sdes."<<endl;}};classB:virtualpublicA{public:B(chari,charj):A(i){b=j;cout<<"B'scons."<<j<<endl;}~B(){cout<<"B'sdes."<<b<<endl;}private:charb;};classC:virtualpublicA{public:C(chari,charj):A(i)(cout<<"C'scons."<<j<<endl;)~C(){cout<<"C'sdes."<<endl;}};classD:publicB,publicC{public:D(chari,charj,chark,chars,charm,charn):C(k,s),B(i,j),A(i),aa(m){cout<<"D'scons."<<endl;}~D(){cout<<"D'sdes."<<endl;}private:Aaa;};voidmain(){Dobj('a','b','c','d','e',f);}答案:A'scons.aB'scons.bC'scons.dA'scons.eD'scons.D'sdes.A'sdes.C'sdes.B'sdes.A'sdes.類的多態(tài)性選擇題.實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)性采用(D)A)重載函數(shù)B)構(gòu)造函數(shù) C)析構(gòu)函數(shù) D)虛函數(shù).在派生類中重新定義虛函數(shù)時(shí),必須在下列哪方面與基類保持一致。(A)用參數(shù)類型 8)參數(shù)名字 C)操作內(nèi)容 D)賦值.當(dāng)一個(gè)類的某個(gè)函數(shù)被說明為virtual時(shí),在該類的所有派生類中的同原型函數(shù)(A)A)都是虛函數(shù) B)只有被重新說明時(shí)才是虛函數(shù)C)都不是虛函數(shù) D)只有被重新說明為virtual時(shí)才是虛函數(shù).通過下述哪一項(xiàng)調(diào)用虛函數(shù)時(shí),采用動(dòng)態(tài)聯(lián)編。(A)A)對(duì)象指針 B)對(duì)象名 C)成員名限定 D)派生類名下面描述中,正確的是(BD)(兩個(gè)答案)A)虛函數(shù)是沒有實(shí)現(xiàn)的函數(shù) B)純虛函數(shù)的實(shí)現(xiàn)在派生類中C)抽象類是沒有純虛函數(shù)的類 D)抽象類指針可以指向不同的派生類對(duì)象若一個(gè)類中含有純虛函數(shù),則該類稱為(D)A)基類 B)純基類 C)派生類 D)抽象類假設(shè)A為抽象類,下列聲明(B)是正確的A)Afun(int); B)A*p; C)intfun(A); D)AObj;在C++中,要實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編,必須使用(D)調(diào)用虛函數(shù)A)類名 B)派生類指針 C)對(duì)象名 D)基類指針下列函數(shù)中,可以作為虛函數(shù)的是(CD)(兩個(gè)答案)A)普通函數(shù) B)構(gòu)造函數(shù)C)成員函數(shù) D)析構(gòu)函數(shù)在派生類中,重載一個(gè)虛函數(shù)時(shí),要求函數(shù)名、參數(shù)的個(gè)數(shù)、參數(shù)的類型、參數(shù)的順序和函數(shù)的返回值(B)A)不同 B)相同 C)相容 D)部分相同下面函數(shù)原型聲明中,(C)聲明了fun為普通虛函數(shù)A)voidfun()=0; B)virtualvoidfun()=0;C)virtualvoidfun。; D)virtualvoidfun(){};在下面四個(gè)選項(xiàng)中,(A)是用來聲明虛函數(shù)的。A)virtualB)publicC)usingD)false在下面程序中,A、B、C、D四句編譯時(shí)出現(xiàn)錯(cuò)誤的是(C)。ClassA//A{public://BA(){func();}//Cvirtualvoidfunc()=0;//D};實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài)性要使用(D)。A)重載函數(shù)B)構(gòu)造函數(shù)C)析構(gòu)函數(shù)D)虛函數(shù)對(duì)虛函數(shù)的調(diào)用(D)。A)一定使用動(dòng)態(tài)聯(lián)編B)必須使用動(dòng)態(tài)聯(lián)編C)一定使用靜態(tài)聯(lián)編D)不一定使用動(dòng)態(tài)聯(lián)編在派生類中重新定義虛函數(shù)時(shí),除了①)方面,其他方面都必須與基類中相應(yīng)的虛函數(shù)保持一致。A)參數(shù)個(gè)數(shù)8)參數(shù)類型。函數(shù)名稱功函數(shù)體關(guān)于虛函數(shù)的描述中,正確的是(D)。A)虛函數(shù)是一個(gè)靜態(tài)成員函數(shù)B)虛函數(shù)是一個(gè)非成員函數(shù)C)虛函數(shù)既可以在函數(shù)說明時(shí)定義,也可以在函數(shù)實(shí)現(xiàn)時(shí)定義D)派生類的虛函數(shù)與基類中對(duì)應(yīng)的虛函數(shù)具有相同的參數(shù)個(gè)數(shù)和類型下列描述中,(D)是抽象類的特性。A)可以說明虛函數(shù)B)可以進(jìn)行構(gòu)造函數(shù)重載C)可以定義友元函數(shù)D)不能說明其對(duì)象關(guān)于純虛函數(shù)和抽象類的描述中,錯(cuò)誤的是(C)。A)純虛函數(shù)是一種特殊的虛函數(shù),它沒有具體的實(shí)現(xiàn)B)抽象類是指具有純虛函數(shù)的類C)一個(gè)基類中說明有純虛函數(shù),該基類的派生類一定不再是抽象類D)抽象類只能作為基類來使用,其純虛函數(shù)的實(shí)現(xiàn)由派生類給出以下(C)成員函數(shù)表示純虛函數(shù)。A)virtualintvf(int);B)voidvf(int)=0;C)virtualvoidvf()=0;D)virtualvoidvf(int){}下列關(guān)于動(dòng)態(tài)聯(lián)編的描述中,錯(cuò)誤的是(D)。A)動(dòng)態(tài)聯(lián)編是以虛函數(shù)為基礎(chǔ)的B)動(dòng)態(tài)聯(lián)編是在運(yùn)行時(shí)確定所調(diào)用的函數(shù)代碼的C)動(dòng)態(tài)聯(lián)編調(diào)用函數(shù)操作是指向?qū)ο蟮闹羔樆驅(qū)ο笠肈)動(dòng)態(tài)聯(lián)編是在編譯時(shí)確定操作函數(shù)的如果一個(gè)類至少有一個(gè)純虛函數(shù)那么就稱該類為(A)。A)抽象類B)虛基類C)派生類D)以上都不對(duì)下面的描述中,正確的是(A)。A)virtual可以用來聲明虛函數(shù)B)含有純虛函數(shù)的類是不可以用來創(chuàng)建對(duì)象的,因?yàn)樗翘摶怌)即使基類的構(gòu)造函數(shù)沒有參數(shù),派生類也必須顯示調(diào)用其構(gòu)造函數(shù)功靜態(tài)數(shù)據(jù)成員可以通過成員初始化列表來初始化4.2填空題1、在析構(gòu)函數(shù)中調(diào)用虛函數(shù)時(shí),采用—靜態(tài)—聯(lián)編。2、動(dòng)態(tài)聯(lián)編是在—虛函數(shù)—的支持下實(shí)現(xiàn)的,它通過—指針或引用—來調(diào)用該函數(shù)操作。3、動(dòng)態(tài)聯(lián)編中直到—程序運(yùn)行一時(shí)才能確定調(diào)用哪個(gè)函數(shù):而靜態(tài)聯(lián)編則是在一程序編譯一時(shí)進(jìn)行的。4、C++中—不支持—虛構(gòu)造函數(shù),但一支持―虛析構(gòu)函數(shù)。5、靜態(tài)聯(lián)編所支持的多態(tài)性稱為一編譯時(shí)—多態(tài)性,動(dòng)態(tài)聯(lián)編所支持的多態(tài)性則稱為—運(yùn)行時(shí)—多態(tài)性,動(dòng)態(tài)多態(tài)性由—虛函數(shù)—來支持。6、在類定義中,將—巴—置于虛函數(shù)的函數(shù)原型的末尾可以將該函數(shù)聲明為純虛函數(shù)。7、下列程序的運(yùn)行結(jié)果如下:Base'scons.Derived'scons.Derived'sdes.Base'sdes.根據(jù)結(jié)果將程序補(bǔ)充完整。#incude<iostream.h>classBase(public:Base(){cout<<"Base'scons."<<endl;}—virtual?Base。—{cout<<"Base'sdes."<endl;}};classDerived:publicBase{public:Derived(){cout<<"Derived'scons."<<endl;}~Derived(){cout<<"Derived'sdes."<<endl;}};voidmain。{Base*Ptr二_newDerived()deleteptr;}8、抽象類不能一定義對(duì)象,但可以.聲明指針或引用—作為參數(shù)類型,函數(shù)返回類型或顯式轉(zhuǎn)換類型。9、根據(jù)不同的輸出結(jié)果,在函數(shù)Tone中填入正確的語句。#include<iostream.h>classInstrument(public:virtualvoidPrint。const{cout<<"Instrument:Print"<<endl;}};classPiano:publicInstument{public:voidPrint。const{cout<<"Piano::Print<<endl;}};classGuitar:publicInstruIment{pub1ic:voidPrint。const{cout<<"Guiur::Print"<<endl;}};voidTone(_Instrumentobj_”/第二個(gè)要求改成Instrument&obj{obj.print();}voidmain。{Guitarg;Tone(g);Pianop;Tone(p);}⑴輸出結(jié)果為:Instrument::PrintInstrument::Print⑵輸出結(jié)果為:Guitar::PrintPiano::Print10、對(duì)虛函數(shù)使用對(duì)象指針或引用調(diào)用,系統(tǒng)使用—?jiǎng)討B(tài)—聯(lián)編:使用對(duì)象調(diào)用時(shí),系統(tǒng)使用__靜態(tài)—聯(lián)編。11、將下列程序補(bǔ)充完整。#include<iostream.h>classconvert{public:convert(doubleI){va11=I;}virtualvoidcompute()=0;protected:doublevall;doubleva12:};//literstogallonsclassl_to_g:publicconvert(public:_ltog(doubleI):convert(I){}voidcompute。{va12=va11/3.7854;cout<<va11<<"litersis"<<val2<<"gdIons."<<endl;}};//FahrenheittoCelsiusclassf_to_c:publicconvert{public:ftoc(doubleI):convert(I){}void&compute。(va12=(va11-32)*5/9;cout<<va11<<“Fahrenheitis”<<va12<<“Celsius.”<<endl;1};voidfun(__convert&f ){pute();}voidmain(){l_to_glgobj(4);f_to_cfcobj(70);fun(lgobj);fun(fcobj);}12、下列程序的運(yùn)行結(jié)果如下:Derive1'sPrint。called.Derive2'sPrint。caIIed.根據(jù)結(jié)果將程序補(bǔ)充完整。#include<iostream.h>classBase(public:Base(intI){b=I;}virtualPrint()=0;protected:intb;}classDerive1:publicBase{public:Derive1(int&I):Base(I){}voidPrint。{cout<<"Derive1'sPrint。called."<<endl;}};classDerive2:publicBase{public:Derive2(intI):Base(I){}voidPrint(){cout<<"Derive2’sPrint。called.”<<endl;}};voidfun(Base*obj){obj->Print();};voidmain。{Derive1*d1=newDerive1(1);Derive2*d2=newDerive2(2);fun(d1);fun(d2);}13、在一個(gè)成員函數(shù)內(nèi)調(diào)用一個(gè)虛函數(shù)時(shí),對(duì)該虛函數(shù)的調(diào)用進(jìn)行_動(dòng)態(tài)—聯(lián)編。14、帶有—純虛函數(shù)—的類稱為抽象類,它只能作為—基類—來使用。4.3簡答題A、成員函數(shù)重載與虛函數(shù)的區(qū)別8、靜態(tài)聯(lián)編和動(dòng)態(tài)聯(lián)編的含義C、純虛函數(shù)和抽象類的定義及其關(guān)系D、抽象類的特點(diǎn)4.4讀程序題1、寫出下列程序的運(yùn)行結(jié)果。#include<iostream.h>classBase(public:Base(inti){x=i;cout<<"Base:"<<x<<endl;}virtual~Base(){cout<<"~Base:"<<x<<endl;}private:intx;};classDerived:publicBase{public:Derived(inti,intj):Base(i){y=j;cout<<"Derived:"<<y<<endl;}~Derived(){cout<<"~Derived:"<<y<<endl;}private:inty;};voidmain(){Base*b1=newBase(15);deleteb1;Base*b2=newDerived(20,25);deleteb2;}答案Base:15~Base:15Base:20Derived:25~Derived:25~Base:202、閱讀下列程序,回答后面提出的問題。#include<iostream.h>classBase{public:Base():x(0),y(0){}Base(intI,intj):x(I),y(j){}intGetX()const{returnx;}intGetY()const{returny;}virtualvoidPrint。const{cout<<"x="<<x<<""<<"y="<<y<<endl;}virtual~Base(){Print();}private:intx,y;};classDerived:publicBase{public:Derived():z(0){}Derived(intI,intj,intk):Base(I,j),z(k){}voidPrint()const{cout<<"x+z="<<Base::GetX()+z<<""<<"y+z="<<Base::GetY()+z<<endl;}~Derived(){Print();}private:intz;};voidmain。{Base*d1=newDerived;d1->Print();Base*d2=newDerived(10,20,30);d2->Print();deleted2;deleted1;}答案x+z=0 y+z=0x+z=40y+z=50x+z=40y+z=50x=10 y=20x+z=0 y+z=0x=0 y=03、閱讀下列程序,回答后面提出的問題。#include<iostream.h>classVehicle{public:voidSetColor(intc){color=c;}virtualvoidMove(){cout<<"Vehiclemoving."<<endl;}private:intcolor;};classCar:publicVehicle(public:voidMove(){cout<<"Carmoving."<<endl;}};classBus:publicVehicle{public:voidMove(){cout<<"Busmoving."<<endl;}};classSportsCar:publicCar{};classCoupe:publicCar{public:voidMove(){cout<<"Coupemoving."<<endl;}};voidmain。{Vehicle*vec;vec=newCar;vec->Move();deletevec;vec=newBus;vec->Move();deletevec;vec=newSportsCar;vec->Move();deletevec;vec=newCoupe;vec->Move();deletevec;}答案:Carmoving.Busmoving.Carmoving.Coupemoving.運(yùn)算符重載5.1選擇題友元運(yùn)算符obj>obj2被C++編譯器解釋為(A)。A)operator>(obj1,obj2)B)>(obj1,obj2)C)obj2.operator>(obj1)D)obj1.oprator>(obj2)下面對(duì)C++運(yùn)算符的正確的描述是(D)。A)只有類成員運(yùn)算符B)只有友元運(yùn)算符C)只有非成員和非友元運(yùn)算符D)上述三者都有下列關(guān)于C++運(yùn)算符函數(shù)的返回類型的描述中,錯(cuò)誤的是(C)。A)可以是類類型B)可以是int類型C)可以是void類型D)可以是float類型重載賦值操作符時(shí),應(yīng)聲明為《)函數(shù)。A)友元B)虛C)成員D)多態(tài)在一個(gè)類中可以對(duì)一個(gè)操作符進(jìn)行(D)重載。A)1種B)2種以下C)3種以下D)多種下列關(guān)于運(yùn)算符重載的描述中,正確的是(D)。A)運(yùn)算符重載可以改變運(yùn)算符的操作數(shù)的個(gè)數(shù)B)運(yùn)算符重載可以改變優(yōu)先級(jí)C)運(yùn)算符重載可以改變結(jié)合性D)運(yùn)算符重載不可以改變語法結(jié)構(gòu)下列運(yùn)算符中,(C)運(yùn)算符在C++中不能重載。A尸B)()C)::D)delete下列運(yùn)算符中,(A)運(yùn)算符在C++中不能重載。A〕?:B川C)newD)&&在重載運(yùn)算符函數(shù)時(shí),下面(D)運(yùn)算符必須重載為類成員函數(shù)形式。+B)-C)++D)->下列運(yùn)算符不能用友元函數(shù)重載的是(B)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論