網(wǎng)絡(luò)作業(yè)5答案_第1頁
網(wǎng)絡(luò)作業(yè)5答案_第2頁
網(wǎng)絡(luò)作業(yè)5答案_第3頁
網(wǎng)絡(luò)作業(yè)5答案_第4頁
網(wǎng)絡(luò)作業(yè)5答案_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一、 選擇題1. C+語言建立類族是通過_實現(xiàn)的。C A)類的嵌套 B)虛函數(shù) C)類的繼承 D)抽象類2. C+中的類有兩種用法:一種是類的實例化,即生成類的對象,并參與系統(tǒng)的運(yùn)行;另一種是通過_派生出新的類。B A)復(fù)用 B)繼承 C)封裝 D)引用3. 繼承具有_,即當(dāng)基類本身也是某一個類的派生類時,底層的派生類也會自動繼承間接基類的成員。B A)規(guī)律性 B)傳遞性 C) 重復(fù)性 D)多樣性在一個類的派生類中,其成員有兩部分構(gòu)成:一部分是從基類繼承得到的,另一部分是自己定義的新成員。當(dāng)基類本身也是一個派生類時,它必然包含了它的直接基類的成員,這些成員相應(yīng)地也存在于該基類的派生類中。因此,

2、繼承是具有傳遞性的。4. _A_提供了類對外部的接口, _B _是類的內(nèi)部實現(xiàn),而_D _不允許外界訪問,但允許派生類的成員訪問,這樣既有一定的隱藏能力,又提供了開放的接口。 A)公有成員 B)私有成員 C)私有成員函數(shù) D)保護(hù)成員5. 下列對基類和派生類關(guān)系的描述中,錯誤的是_。B A)派生類是基類的具體化 B)派生類是基類的子集 C)派生類是基類定義的延續(xù)D)派生類是基類的組合派生類包含基類中的成員,它是對基類定義的擴(kuò)充和延續(xù),是對基類定義的進(jìn)一步具體化,而不是基類的子集。6 下列對派生類的描述中,錯誤的是_。D A)一個派生類可以作為另一個派生類的基類 B)派生類至少有一個基類 C)派

3、生類的缺省繼承方式是private D)派生類只繼承了基類的公有成員和保護(hù)成員 /繼承了基類的所有成員7. 下列關(guān)于繼承的描述中,錯誤的是_。D A)析構(gòu)函數(shù)不能被繼承 B)派生類是基類的組合C)派生類的成員除了它自己的成員外,還包含了它的基類的成員D)派生類中繼承的基類成員的訪問權(quán)限到派生類保持不變派生類不能繼承基類的構(gòu)造函數(shù)和析構(gòu)函數(shù),也不能訪問基類的私有成員,而對基類的公有成員和保護(hù)成員的訪問權(quán)限隨著派生類對基類的繼承方式而改變。8. 派生可以分為_A _和_C _。由_得到的派生類,其基類的所有公有成員都只能成為它的私有成員,這些私有成員只能被派生類的成員函數(shù)訪問,而_B _無權(quán)訪問;

4、由_得到的派生類,其基類中所有公有成員在派生類中也都是公有的。 A)公有派生 B)派生類的實例C)私有派生 D)派生類的構(gòu)造函數(shù)對于公有繼承方式: ·基類成員對其對象的可見性 與一般類及其對象的可見性相同,公有成員可見,其他成員不可見。這里保護(hù)成員與私 有成員相同。 ·基類成員對派生類的可見性 對派生類來說,基類的公有成員和保護(hù)成員可見:基類的公有成員和保護(hù)成員作為派生類的成員時,它們都保持原有的狀態(tài);基類的私有成員不可見:基類的私有成員仍然是私有的,派生類不可訪問基類中的私有成員。 ·基類成員對派生類對象的可見性 對派生類對象來說,基類的公有成員是可見的, 其他

5、成員是不可見。 所以,在公有繼承時,派生類的對象可以訪問基類中的公有成員;派生類的成員函數(shù)可以訪問基類中的公有成員和保護(hù)成員。對于私有繼承方式: ·基類成員對其對象的可見性 與一般類及其對象的可見性相同,公有成員可見,其 他成員不可見。 ·基類成員對派生類的可見性 對派生類來說,基類的公有成員和保護(hù)成員是可見的:基類的公有成員和保護(hù)成員都作為派生類的私有成員,并且不能被這個派生類的子類所訪問;基類的私有成員是不可見的:派生類不可訪問基類中的私有成員。 ·基類成員對派生類對象的可見性 對派生類對象來說,基類的所有成員都是不可見的。 所以,在私有繼承時,基類的成員只能

6、由直接派生類訪問,而無法再往下繼承。 對于保護(hù)繼承方式: 這種繼承方式與私有繼承方式的情況相同。兩者的區(qū)別僅在于對派生類的成員而言, ·基類成員對其對象的可見性 與一般類及其對象的可見性相同,公有成員可見,其 他成員不可見。 ·基類成員對派生類的可見性 對派生類來說,基類的公有成員和保護(hù)成員是可見的:基類的公有成員和保護(hù)成員 都作為派生類的保護(hù)成員,并且不能被這個派生類的子類所訪問;基類的私有成員是不可見的:派生類不可訪問基類中的私有成員。 ·基類成員對派生類對象的可見性 對派生類對象來說,基類的所有成員都是不可見的。 所以,在保護(hù)繼承時,基類的成員也只能由直接派

7、生類訪問,而無法再往下繼承。 9. 基類的_B _不能為派生類的成員訪問,基類的_A _在派生類中的性質(zhì)和繼承的性質(zhì)一樣,基類的_D_在私有繼承時在派生類中成為私有成員函數(shù),在公有和保護(hù)繼承時在派生類中仍為保護(hù)成員函數(shù)。 A)公有成員 B)私有成員 C)私有成員函數(shù) D)保護(hù)成員函數(shù)10. 派生類的對象對它的基類成員中_A_是可以訪問的。 A)公有繼承的公有成員 B)公有繼承的私有成員 C)公有繼承的保護(hù)成員 D)私有繼承的公有成員11. 下列說法中錯誤的是_。B A)公有繼承時基類中的public成員在派生類中仍是public的 B)公有繼承時基類中的private成員在派生類中仍是priv

8、ate可見的 C)私有繼承時基類中的public成員在派生類中是private的D)保護(hù)繼承時基類中的public成員在派生類中是protected的基類的私有成員在在派生類中是隱藏的,是不可見的,派生類不可訪問基類中的私有成員。12. 下面敘述錯誤的是_:A A)基類的protected成員在派生類中仍然是protected的 B)基類的protected成員在public派生類中仍然是protected的C)基類的protected成員在private派生類中是private的D)基類的protected成員不能被派生類的對象訪問參考第八題說明14. C+類體系中,不能被派生類繼承的有_。

9、A A)構(gòu)造函數(shù) B)虛函數(shù) C)靜態(tài)成員函數(shù) D)賦值操作函數(shù)派生類不能繼承基類的構(gòu)造函數(shù)和析構(gòu)函數(shù)15. 派生類的構(gòu)造函數(shù)的成員初始化列表中,不能包含_。C A)基類的構(gòu)造函數(shù) B)派生類中子對象的初始化 C)基類中子對象的初始化D)派生類中一般數(shù)據(jù)成員的初始化派生類的構(gòu)造函數(shù)只負(fù)責(zé)對基類成員(調(diào)用基類的構(gòu)造函數(shù))、新定義的子對象成員和一般數(shù)據(jù)成員進(jìn)行初始化16 多繼承的構(gòu)造順序可分為如下4步:C 所有非虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造; 所有虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造; 所有子對象的構(gòu)造函數(shù)按照它們聲明的順序構(gòu)造: 派生類自己的構(gòu)造函數(shù)體: 這4個步驟的正確順序是_

10、。A) B) c) D)參考課本P387及例題17 關(guān)于多繼承二義性的描述中,錯誤的是_。C A) 一個派生類的兩個基類中都有某個同名成員,在派生類中對這個成員的訪可能出現(xiàn)二義性 B)解決二義性的最常用的方法是對成員名的限定法 C)基類和派生類中同時出現(xiàn)的同名函數(shù),也存在二義性問題 D)一個派生類是從兩個基類派生出來的,而這兩個基類又有一個共同的基類對該基類成員進(jìn)行訪問時,可能出現(xiàn)二義性 基類和派生類中同時出現(xiàn)的同名函數(shù),若其形參個數(shù)、類型都一致則基類的被派生類的覆蓋,否則可看作函數(shù)重載。 18 設(shè)置虛基類的目的是_。B A)簡化程序 B)消除二義性 C)提高運(yùn)行效率 D)減少目標(biāo)代碼 19.

11、 下列虛基類的聲明中,正確的是_。D A) class virtua1 B:public A B) virtual class B:public A C) class B:public A virtual D) c1ass B:virtual public A20. 帶有虛基類的多層派生類構(gòu)造函數(shù)的成員初始化列表中都要列出虛基類的構(gòu)造函數(shù), 這樣將對虛基類的子對象初始化_。D A)與虛基類下面的派生類個數(shù)有關(guān) B)多次 C)兩次 D)一次24. 下面_的敘述不符合賦值兼容規(guī)則。B A)派生類的對象可以賦值給基類的對象 B)基類的對象可以賦值給派生類的對象 C)派生類的對象可以初始化基類的引用D

12、)派生類的對象的地址可以賦值給指向基類的指針賦值兼容規(guī)則是指在需要基類對象的任何地方都可以使用公有派生類的對象來替代。通過公有繼承,派生類得到了基類中除構(gòu)造函數(shù)、析構(gòu)函數(shù)之外的所有成員,而且所有成員的訪問控制屬性也和基類完全相同。這樣,公有派生類實際就具備了基類的所有功能,凡是基類能解決的問題,公有派生類都可以解決。賦值兼容規(guī)則中所指的替代包括以下的情況: ·派生類的對象可以賦值給基類對象。 ·派生類的對象可以初始化基類的引用。 ·派生類對象的地址可以賦給指向基類的指針。在替代之后,派生類對象就可以作為基類的對象使用,但只能使用從基類繼承的成員。參考光盤講義第13

13、章第10節(jié)26. 下列程序巾,劃線處正確的語句是_:C #include <iostream.h>class Basepublic: void fun() cout<<"Base:fun"<<endl; ;class Derived public Base void fun() _ /顯式調(diào)用基類的函數(shù)fun() cout<<"Derived:fun"<<endl; ;A) fun(); B) Base.fun(); C) Base:fun(); D) Base->fun();程序中要求顯

14、式調(diào)用某個類的成員時,必須使用成員名限定符(域區(qū)分符)。其一般格式為 類名>.<成員名> 或 類名>.<成員名>(<參數(shù)表>) 27. 下列程序中,編譯時不會出錯的語句是_A #include <iostream.h>class Basepublic: Base() Base(int i) data=i; private: int data;class Derived: public Basepublic: Derived() :Base(0) Derived(int x): Base(x) ;void main() Derived

15、d1(1); Base *pb,b1; pb=&d1; /A d1=b1; /B Base &refB=d1; Derived d2=*pb; /C Derived &refD=refB; /D 公有繼承時:派生類的對象可以賦值給基類的對象,即用派生類從基類繼承來的成員,逐個賦值給基類對象的成員。反之則出錯。派生類的對象可以初始化基類的引用。反之則出錯。派生類的對象地址可以賦值給指向基類的指針。反之則出錯。不用虛函數(shù)時,后兩種情況的基類的指針和引用只能訪問派生類中從基類繼承來的成員二、填空題28 派生類對基類的繼承有三種方式:_公有繼承public _、_私有繼承pri

16、vate _和_保護(hù)繼承protected _。29 類繼承中,缺省的繼承方式是private_。30 如果類Alpha繼承了類Beta,則類Alpha稱為派生類類,類Beta稱為_基類_類。31 C+提供的_多繼承_機(jī)制允許一個派生類繼承多個基類,即使這些基類是相互無關(guān)的。32 利用繼承能夠?qū)崿F(xiàn)_軟件復(fù)用。這種實現(xiàn)縮短了程序的開發(fā)時間,促使開發(fā)人員復(fù)用 已經(jīng)測試和調(diào)試好的高質(zhì)量軟件。33 若類Y是類X的私有派生類,類Z是類Y的派生類,則類Z_不能_訪問類X的保護(hù)成員與公有成員。34 當(dāng)用protected繼承從基類派生一個類時,基類的public成員成為派生類的protected 成員,pr

17、otected成員成為派生類的_protected_成員。35 多繼承情況下,派生類的構(gòu)造函數(shù)的執(zhí)行順序取決于_定義_派生類時所指定的各 基類的順序。36 構(gòu)造函數(shù)_不能_被繼承,析構(gòu)函數(shù)_不能_被繼承。37 對于派生類的構(gòu)造函數(shù),在定義對象時構(gòu)造函數(shù)的執(zhí)行順序為:先執(zhí)行_基類的構(gòu)造函數(shù)_,再執(zhí)行_子對象的構(gòu)造函數(shù)_,最后執(zhí)行_派生類本身的構(gòu)造函數(shù)體_。38 對基類數(shù)據(jù)成員的初始化必須在派生類構(gòu)造函數(shù)中的_成員初始化列表_處執(zhí)行。在派生類構(gòu)造函數(shù)中,對基類數(shù)據(jù)成員的初始化必須在成員初始化列表中進(jìn)行,新增成員的初始化既可以在成員初始化列表中進(jìn)行,也可以構(gòu)造函數(shù)體中進(jìn)行。39 當(dāng)撤消一個含有基類和

18、子對象成員的派生類對象時,將首先完成_派生類_的析 構(gòu)函數(shù)定義體的執(zhí)行,接著完成 _子對象的_的析構(gòu)函數(shù)定義體的執(zhí)行,最后完成_基類_的析構(gòu)函數(shù)定義體的執(zhí)行。派生類的析構(gòu)函數(shù)的執(zhí)行過程與派生類的構(gòu)造函數(shù)的執(zhí)行過程嚴(yán)格相反。40 _多_繼承情況下,派生類中對基類成員的訪問會出現(xiàn)二義性。解決二義性的 方法是_成員名限定法_和_虛基類_。41 在派生類中使用基類的成員,可以顯式地使用_成員名限定符_來使用基類成員。43 設(shè)置虛基類的目的是_解決二義性問題_,可通過關(guān)鍵字virtual _標(biāo)識虛基類。44 指向基類的對象的指針變量也可以指向_的對象。派生類46 _派生類_類的對象可作為_基類_類的對象

19、處理。47 在劃線處填上適當(dāng)?shù)恼Z句,完成下列程序。#include<iostream.h>#include <math.h>class Pointpublic: Point(double a, double b, double c) _X=a;Y=b;Z=c; double Getx( ) return X; double Gety( ) return Y; double Getz() return Z; private: _double X _protected:_double Y, Z;_ ;class Line:_public _ Pointpublic: Lin

20、e(double a,double b,double c,double d):point(a,b,c)_K=d; void show() cout<<Getx()<<endl; cout<<Gety()<<" "<<Y<<endl; cout<<Getz()<<" "<<Z<<endl; cout<<K<<endl; private: double K;void main() Line obj(1.2,3.4,5

21、.6,7.8); obj.show( );注意:protected成員與private成員的區(qū)別,對派生類Line來說,基類Point的保護(hù)成員Y和Z是可見的:基類Point的私有成員X是不可見的:派生類不可訪問基類中的私有成員X。48 判斷f,Y:f,Z2:f 中的各條語句是否正確。class Xpublic: int a;class Y1: public X;class Y2: protected X;class Y3: private Xprivate: void f(Yl* pyl,Y2* py2,Y3* py3);class Z2: public Y2private: void f(

22、Y1* pyl,Y2* py2,Y3* py3);void f(Yl* pyl,Y2* py2,Y3* py3) pyl->a=7; /_正確_ py2->a=7; /_錯誤_ py3->a=7; /_錯誤_void Y3:f(YI* pyl,Y2* py2,Y3* py3) pyl->a=7; /_正確_ py2->a=7; /_錯誤_ py3->a=7; /_正確_void Z2:f(YI* pyl,Y2* py2,Y3* py3) pyl->a=7; /_正確_ py2->a=7; /_錯誤_ py3->a=7; /_錯誤_ 派生類Y

23、1從基類X公有繼承,基類X成員a在Y1中仍然是public,所以Y1類型的指針py1可以訪問a成員。因此、正確。派生類Y2從基類X保護(hù)繼承.,X成員a在Y2中變?yōu)閜rotected,保護(hù)成員不能在類體外被訪問,因此在普通函數(shù)f及Y3的成員f函數(shù)的函數(shù)體內(nèi),不能通過Y2類型的指針py2訪問a成員,和錯誤。派生類Z2從派生類Y2公有繼承,基類成員a在Z2中變?yōu)楸Wo(hù)成員,因此a 成員可以在Z2的類體內(nèi)被直接訪問,或通過Z2類體內(nèi)的Z2類對象被訪問,而不能通過類Z2的基類Y2的對象進(jìn)行訪問,因此錯誤。派生類Y3從基類X私有繼承,基類成員a在Y3中變?yōu)樗接谐蓡T,只能在Y3的類體內(nèi)進(jìn)行訪問,在Y3的成員函

24、數(shù)f中,Y3類型的指針py3可以訪問a成員,此時仍然是在類Y3的類體內(nèi),因此正確。但在普通函數(shù)f及Z2的成員f函數(shù)的函數(shù)體內(nèi),不能通過py3訪問a成員,因此和錯誤。49 根據(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 Pointpub

25、lic: Rectangle(int x,int y,int w,int h)_:Point(x,y)_W=w; H=h; void Move(int 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

26、 main() Rectangle rect(1,2,3,4); rect.Move(5,6); cout<<"The data of rect(X,Y,W,H):(” <<rect.GetX()<<","<<rect.GetY()<<"," <<rect.GetW()<<","<<rect.GetH0<<")"<<endl;注意在私有繼承時,為了使派生類的對象可以訪問基類的成員,必須在派生類中聲明同名的成員。在類中定義同名成員有兩種方法: v

溫馨提示

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

評論

0/150

提交評論