面向?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頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、語法擴(kuò)充1.1選擇題在C+中用( D )能夠?qū)崿F(xiàn)將參數(shù)值帶回。a)數(shù)組 b)指針 c)引用 d)上述ABC都可考慮函數(shù)原型void test(int a,int b=7,char *ch="*"),下面的函數(shù)調(diào)用中,屬于不合法調(diào)用的是:( C )A)test(5) B)test(5,8) C)test(6,"#") D)test(0,0,"*");已知: int m=10;下列表示引用的方法中,正確的是:( C )A)int &Z; B)int &t=10; C)int &X=m; D)float &f

2、=&m;下列不是函數(shù)重載所要求的條件是:( D )A)函數(shù)名相同 B)參數(shù)個(gè)數(shù)不同 C)參數(shù)類型不同 D)函數(shù)返回值類型不同在C+中執(zhí)行以下4條語句后輸出rad值為:( C )static int hot=200;int &rad=hot;hot=hot+100;cout<<rad<<endl;A) 0 B) 100 C) 300 D) 200系統(tǒng)在調(diào)用重載函數(shù)時(shí),不能作為確定哪個(gè)重載函數(shù)被調(diào)用的依據(jù)是:( D )A)參數(shù)個(gè)數(shù) B)參數(shù)類型 C)函數(shù)名稱 D)函數(shù)的返回值類型對(duì)C+語言和C語言的兼容性,描述正確的是:( A )A)C+兼容C B)C+部分

3、兼容C C)C+不兼容C D)C兼容C+在C+中使用流進(jìn)行輸入輸出,其中用于屏幕輸出的對(duì)象是:( C )A)cerr B)cin C)cout D)cfile對(duì)使用關(guān)鍵字new所開辟的動(dòng)態(tài)存儲(chǔ)空間,釋放時(shí)必須使用( C )A)free B)create C)delete D)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 )A)函數(shù)體語句較多 B)函數(shù)體語句較少 C)函數(shù)執(zhí)行時(shí)間較短 D)函數(shù)執(zhí)行時(shí)間過長in

4、t Func(int,int);不可與下列哪個(gè)函數(shù)構(gòu)成重載( B )A)int Func(int,int,int); B)double Func(int,int);C)double Func(double,double); D)double Func(int,double);下面的哪個(gè)保留字不能作為函數(shù)的返回類型( C )A)void B)int C)new D)long一個(gè)函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,選用( A )。A. 內(nèi)聯(lián)函數(shù) B. 重載函數(shù) C. 遞歸函數(shù) D. 嵌套函數(shù)已知函數(shù)f的原型為:void f (int&a,char*b);變量s,t的定義是:int s;ch

5、ar t ="ABCD";把s和t分別作為第一參數(shù)和第二參數(shù)來調(diào)用函數(shù)f,正確的調(diào)用語句是( C )A f(&s,&t); B f(&s,t); C f(s,t); D f(s,&t);若定義cin>>str;當(dāng)輸入Microsoft Visual Studio 6.0!所得結(jié)果是str=(B)。A、 Microsoft Visual Studio 6.0!B、 MicrosoftC、 Microsoft Visual D、 Microsoft Visual Studio 6.0.函數(shù)模板(C)。A、代表某一具體函數(shù)B、與模板函數(shù)

6、是同一個(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 <class T>T fun(T x,T y)return x*x+y

7、*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.2填空題1、 假定有如下定義:int x;,若要將整型變量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指向_b_。Int a,b,*c=&a

8、mp;a;int *&p=c;p=&b; 4、 假設(shè)有如下函數(shù)定義:void Fun(int x,int y=100);則語旬Fun(5)語句_ 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>_ int Totalsum(int array,int len)_ ;void main(

9、)int a5=2,3,6,8,10;_int Total _;Total =Totalsum(a,5);cout<<"Sum of array:"<<Total<<endl;int Totalsum(int array,int len)_int sum =0_ ;for(int I=0;_I<len_ ;I+)_ sum += arrayI_ ;return sum; 7、 下面的函數(shù)Fun未使用中間變量實(shí)現(xiàn)了對(duì)兩個(gè)數(shù)的交換,請(qǐng)完成下列函數(shù)的定義。Void Fun (int &x,int &y)x+ = y;y =

10、_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ù)。 1.3簡答題A、.內(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說明。B、

11、.函數(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ū)別D、內(nèi)聯(lián)函數(shù)使用上的限制E、定義帶默認(rèn)參數(shù)值函數(shù)的規(guī)則F、指針與常量的關(guān)系1.4程序閱讀題1)寫出下列程序的運(yùn)行結(jié)果。#include <iostream.h>void main()int x;int &p=x;x=10;p=x+10;

12、cout<<x<<","<<p<<endl;結(jié)果:20,202)寫出下列程序的運(yùn)行結(jié)果。#include <iostream.h>int f(int a)return +a;int g(int &a)return +a;void main()int m=0,n=0;m+=f(g(m);n+=f(f(n);cout<<"m="<<m<<endl;cout<<"n="<<n<<endl;結(jié)果:m=3n

13、=23) 寫出下列程序的運(yùn)行結(jié)果。#include <iostream.h>void Fun()int num=20;cout<<"The Fun's num is"<<num<<endl;void main()int num=10;cout<<"The main's num is "<<num<<endl;Fun();int num=30;cout<<"The Field's num is "<<num

14、<<endl;cout<<"The main's num is "<<num<<endl;結(jié)果:The main's num is 10The Fun's num is20The Field's num is 30The main's num is 10類和對(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)給定作用域的大小的

15、D)標(biāo)識(shí)成員是屬于哪個(gè)類的已知:print()函數(shù)是一個(gè)類的常成員函數(shù),它無返回值,下列表示中,是正確的。( A )A)void print()const; B)const void print();C)void const print(): D)void print(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)封裝是借

16、助于( B )A)枚舉 B) 類 C) 數(shù)組 D)函數(shù)定義析構(gòu)函數(shù)時(shí),應(yīng)該注意:( C )A)其名與類名完全相同 B)返回類型是void類型C)無形參,也不可重載 D)函數(shù)體中必須有delete語句類clase CC1的說明如下,錯(cuò)誤的語句是:( A )clase CC1int a=2; /(A)CC1(); /(B)public:CC1(int val); /(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)用它

17、 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ù)不可以重載有如下類聲明“class Aint x; ;”,則A類的成員x是:( B )A)公有數(shù)據(jù)成員 B)私有數(shù)據(jù)成員

18、 C)公有成員函數(shù) D)私有成員函數(shù)類TM和類TN是兩個(gè)獨(dú)立的類,那么類TM中哪種形式的數(shù)據(jù)成員一定是不允許的:( C )A)TM * a B)TN & a C)TM a D)TN a;以下關(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)鍵字

19、不能用來聲明類的訪問權(quán)限的是:( C )A)public B)private C)static D)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ù)C)這個(gè)類不需要構(gòu)造函數(shù) 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è)

20、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)不能確定.假定有類A

21、B,有相應(yīng)的構(gòu)造函數(shù)定義,能正確執(zhí)行“AB a(4),b(5), c3 , *p2=&a,&b;”語句,請(qǐng)問執(zhí)行完此語句后共調(diào)用該類構(gòu)造函數(shù)的次數(shù)為( C )A)3 B)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ì)象成員

22、的方法是( D )。A. :        B. ;        C. .         D. ->靜態(tài)成員函數(shù)沒有( B )。A返回值      B. this指針       C. 指針參數(shù)     

23、60;  D. 返回類型在下列關(guān)鍵字中,用于說明類中公有成員的是( A )。Apublic; Bprivate; Cprotected; Dfriend不是構(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è)

24、類中只能定義一個(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. 成員

25、函數(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)算符;D靜態(tài)數(shù)據(jù)成員不是所有對(duì)象所共用的。2.2填空題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ù)成員初始

26、化_。 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ù)據(jù)成員_ ,共同行為被描述為類中的_成員函數(shù)_。 8、 若要把類FriendClass定義為類MyClass的友元類,則應(yīng)在類MyClass的定

27、義中加入語句_friend class FriendClass;_。 9、 在結(jié)構(gòu)定義中,數(shù)據(jù)和成員函數(shù)默認(rèn)權(quán)限是_public_。在類定義中,數(shù)據(jù)和成員函數(shù)默認(rèn)權(quán)限是_private_。 10、 在下面程序的橫線處填上適當(dāng)?shù)恼Z句,使類型該程序執(zhí)行結(jié)果為10。#include <iostream.h>class MyClasspub1ic:_ MyClass ( int a ) _x = a; _/為x置值_int GetNum() return x; _ /取x值private:int x; ;void main()Myclass my(10);Cout<<my.Ge

28、tNum()<<end; 11、 完成下面的類定義。Class MyClasspublic:MyClass()x=0;_friend_int GetNum(_MyClass _my);private:int x; ;int GetNum(_MyClass _my)_return my.x; 12、 _new_運(yùn)算符對(duì)指定類型對(duì)象動(dòng)態(tài)分配內(nèi)存并返回該類型的_指針_。 13、 若要把函數(shù)void FriendFunction()定義為類MyClass的友元函數(shù),則應(yīng)在類MyClass的定義中加入語句_friend void FriendFunction();_。 14、 類的具體表現(xiàn)是

29、通過定義_對(duì)象_來操作的。 15、 在定義類的對(duì)象時(shí),C+程序?qū)⒆詣?dòng)調(diào)用該對(duì)象的_構(gòu)造_函數(shù)初始化對(duì)象自身。 16、 一般情況下,按照面向?qū)ο蟮囊?把類中的數(shù)據(jù)成員(屬性)定義為_private_權(quán)限,而把成員函數(shù)(方法)定義為_public_權(quán)限。 17、 在類中定義和實(shí)現(xiàn)的函數(shù)稱為_內(nèi)聯(lián)函數(shù)_。 18、 非成員函數(shù)應(yīng)聲明為類的_友元函數(shù)_才能訪問這個(gè)類的private成員。 2.3簡答題A、類的含義B、構(gòu)造函數(shù)的特點(diǎn)C、拷貝構(gòu)造函數(shù)的調(diào)用D、析構(gòu)函數(shù)的定義及其特點(diǎn)E、靜態(tài)成員的分類及各自的特點(diǎn)2.4程序閱讀題1) 寫出下列程序的運(yùn)行結(jié)果。#include <iostream.h&g

30、t;class MyClasschar ch;public:MyClass();MyClass(char character);void Print();MyClass();MyClass:MyClass()cout<<"This is a constructor!"<<endl;ch='a'MyClass:MyClass(char character)cout<<"This is a constructor!"<<endl;ch=character;void MyClass:Print()

31、cout<<"The value of ch is "<<ch<<endl;MyClass:MyClass()cout<<"This is a destructor!"<<endl;void main()MyClass first,second('b');first.Print();second.Print();運(yùn)行結(jié)果:This is a constructor!This is a constructor!The value of ch is aThe value of ch

32、is bThis is a destructor!This is a destructor!2)寫出下列程序的運(yùn)行結(jié)果#include <iostream.h>class MyClasspublic:MyClass();void Print();MyClass();private:int I;static int j; ;int MyClass:j=0;MyClass:MyClass()cout<<"This is constructor!"<<endl;j+=10; void MyClass:Print() cout<<&q

33、uot;The value of j is" <<J<<endl; MyClass:MyClass()cout<<"This is a destructor!"<<endl; void main() MyClass first,second;first.Print();second.Print(); This is constructor!This is constructor!The value of j is20The value of j is20This is a destructor!This is a d

34、estructor!繼承與派生3.1選擇題.在C+中,類與類之間的繼承關(guān)系具有( C )A)自反性 B)對(duì)稱性 C)傳遞性 D)反對(duì)稱性.在公有繼承的情況下,基類的成員(私有的除外)在派生類中的訪問權(quán)限( B )A)受限制 B)保持不變 C)受保護(hù) D)不受保護(hù).按解釋中的要求在下列程序劃線處填入的正確語句是:( C )#include <iostream.h>class Basepublic:void fun()cout<<"Base:fun"<<endl;class Derived:public Basepublic:void fun

35、() /在此空格處調(diào)用基類的函數(shù)fun()cout<<"Derived:fun"<<endl;A)fun(); B)Base.fun(); C)Base:fun(); D)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成員在派

36、生類中仍是protected的D)私有繼承時(shí),基類中的public成員在派生類中是private的.下列虛基類的聲明中,正確的是:( B )A)class virtual B: public A B)class B: virtual public A C)class B: public A virtual D)virtual class B: public A.C+設(shè)置虛基類的目的是( A )A)消除二義性 B)簡化程序 C)提高運(yùn)行效率 D)減少目標(biāo)代碼class Xint a;public:X(int x=0)a=x;class Y:public Xint b;public :Y(int

37、x=0,int y=0):X(y) b=x;下列語句組中出現(xiàn)語法錯(cuò)誤的是(D)A. X *pa=new Y(1,2);B.X a1=Y(1,3);C.Y b1(2,3); X &a3=b1;D.X a4(10);Y b2=a4;class Base public: int i; Base(int t) : i ( t ) ;class Derived: protected Base Base b; int j;public: Derived (int t);在構(gòu)造函數(shù)Derived的下列定義中,正確的是(B )A. Derived : : Derived (int t) : b(t),

38、 j(t) B. Derived : : Derived (int t) : b(t), Base(t), j(t) C. Derived : : Derived (int t) : Base(t), j(t) D. Derived : : Derived (int t) : i(t), b(t), j(t) 在哪種派生方式中,派生類可以訪問基類中的protected成員(B )A)public和private B)public、protected和private C)protected和private D)僅protected在C+中,類與類之間的繼承關(guān)系具有(C )A) 自反性 B) 對(duì)稱

39、性 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

40、成員 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)class virtua

41、l B:public A B)virtual class B:public A C)class B:public A virtual D)class B:virtual public A下面敘述錯(cuò)誤的是(A )。 A)基類的protected成員在派生類中仍然是protected的 B)基類的protected成員在public派生類中仍然是protected的 C)基類的protected成員在private派生類中是private的 D)基類的protected成員不能被派生類的對(duì)象訪問 下列說法中錯(cuò)誤的是(A )。 A) 保護(hù)繼承時(shí)基類中的public成員在派生類中仍是public的 B

42、)公有繼承時(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)派生類可以使

43、用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)class virtual B: public A

44、 B)class B: virtual public A C)class B: public A virtual D)virtual class B: public A.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í)行順

45、序取決于_定義_派生類時(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>class planetprotected:double distance;_/行星距太陽的距離int revolve;_/行星的公轉(zhuǎn)周

46、期public:planet(double d,int r)distance=d;revolve=r;class earth:public planetdouble circumference; /地球繞太陽公轉(zhuǎn)的軌道周長public:/定義構(gòu)造函數(shù)earth(double d,int r),并計(jì)算地球繞太陽公轉(zhuǎn)的軌道周長。/假定:circumnference=2*d*3.1416_ earth(double d,int r): planet (d, r)_ circumnference=2*d*3.1416;_/定義show()函數(shù)顯示所有信息_void show() cout<<

47、;”distance is ”<< distance<<”miles, revolve is”<< revolve<<”days”<<endl; cou<<” circumference is “<< circumference<<endl; _;void main()earth ob(9300000,365);ob.show(); 10、 設(shè)置虛基類的目的是_為了消除二義性_,可通過_virtual_標(biāo)識(shí)虛基類。 11、 若多繼承時(shí),多個(gè)基類中擁有一個(gè)同名的成員,則_不能_用調(diào)整訪問權(quán)限確定對(duì)該成

48、員的訪問。 12、 根據(jù)基類的定義和測試程序,完成下面派生類的定義。Class Pointpublic:Point(int I=0,int j=0)X=I;Y=j;void Move(int xOff,int yOff)X+=xOff;Y+=yOff;int GetX()return X;int GetY()return Y;private:int X,Y;class Rectangle :private Pointpublic:Rectangle(int x,int y,int w,int h)_:Point(x,y)_W = w  H = h _ void Move(i

49、nt xOff,int yOff)_ Point:Move(xOff, yOff);_ int GetX()_return Point:GetX();_ int GetY()_return Point:GetY();_ int GetW()_return W;_ int GetH()_return H;_ private:int W,H;#include <iostream.h>#include <math.h>void main()Rectangle rect(1,2,3,4);rect.Move(5,6);cout<<“The data of rect(

50、X,Y,W,H):(“<<rect.GetX()<<“,”<<rect.GetY()<<“,”<<rect.GetW()<<“,”<<rect.GetH()<<“)”<<endl; 13、 多繼承可以視為是_單繼承_的擴(kuò)展。 14、 在劃線處填上適當(dāng)?shù)恼Z句,完成下列程序。#include <math.h>class Pointpublic:point(double a,double b,double c)_X =a; Y=b; Z =c;_double Getx()retur

51、n X;double Gety()return Y;double Getz()return Z;private:_double X, Y;_protected:_double Z;_;class Line :_public_Pointpublic:Line(double a ,double b,double c,double d)_:Point(a,b,c)_K = d;_ void show()cout<<Getx()<<endl;cout<<Gety()<<“<<.<<<endl;cout<<Getz

52、()<<“<<Z<<endl;cout<<K<<endl;private:double k;void main()Line obj(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ì)

53、象。 20、 類之間的”有”關(guān)系代表_組合_,”是”關(guān)系代表_繼承_。 3.3簡答題A、派生類的定義及其特點(diǎn)B、單繼承和多繼承的概念及其關(guān)系C、繼承方式的種類及其各自的特點(diǎn)D、在繼承中構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用規(guī)則F、賦值兼容原則G、類模板和模板類的含義及其關(guān)系3.4讀程序題1、 寫出下列程序的運(yùn)行結(jié)果。#include <iostream.h>class Basepublic:void Who()cout<<"class Base"<<endl;class Derived1:public Basepublic:void Who()cout

54、<<"class Derived1"<<endl;class Derived2:public Basepublic:void Who()cout<<"class Derived2"<<endl;void main()Base obj1,*p;Derived1 obj2;Derived2 obj3;p=&obj1;p->Who();p=&obj2;p->Who();p=&obj3;p->Who();obj2.Who();obj3.Who();答案:class Base

55、class Baseclass Baseclass Derived1class Derived22、 寫出下列程序的運(yùn)行結(jié)果。#include <iostream.h>class instrumentpublic: void display() constcout<<"instument:display."<<endl;class piano:public instrumentpublic:void display() constcout<<"piano:display."<<endl;class guitar:public instrumentpublic:void display() constcout<<"guitar:display."<<endl;void tone(instrument & I)I.display();void main()guitar guitar1;tone

溫馨提示

  • 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)論