c++面向?qū)ο笳n后答案第8章_第1頁(yè)
c++面向?qū)ο笳n后答案第8章_第2頁(yè)
c++面向?qū)ο笳n后答案第8章_第3頁(yè)
c++面向?qū)ο笳n后答案第8章_第4頁(yè)
c++面向?qū)ο笳n后答案第8章_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、在C+中,三種派生方式的說(shuō)明符號(hào)為public、private、protected不加說(shuō)明,則默 認(rèn)的派生方式為private o 當(dāng)公有派生時(shí),基類的公有成員成為派生類的公冇成員:保護(hù)成員成為派生類的保護(hù)成 生:私有成員成為派生類的不能直接訪問(wèn)成員當(dāng)保護(hù)派生時(shí),基類的公有成員成為派 生類的保護(hù)成負(fù);保護(hù)成員成為派生類的保護(hù)成員:私有成員成為派生類的不能直接訪 問(wèn)成負(fù)。 派生類的構(gòu)造函數(shù)一般有3項(xiàng)工作要完成:首先基類初始化,其次成員對(duì)象初始化,最 后執(zhí)行派牛類構(gòu)造函數(shù)體。 多繼承時(shí),多個(gè)基類中的同名的成員在派生類中由于標(biāo)識(shí)符不唯一而出現(xiàn)二在派生 類中采用_虛基類或作川域分辨符來(lái)消除該問(wèn)題。 2

2、. 簡(jiǎn)答題 派生類如何實(shí)現(xiàn)對(duì)基類私有成員的訪問(wèn) 什么是類型兼容規(guī)則 派生類的構(gòu)造函數(shù)是怎樣的執(zhí)行順序,析構(gòu)函數(shù)的執(zhí)行順序是如何實(shí)現(xiàn)的 繼承與組合之間的區(qū)別與聯(lián)系是什么 什么是虛基類它有什么作用含有虛基類的派生類的構(gòu)造函數(shù)有什么要求,什么是最遠(yuǎn)派生 類,建立一個(gè)含有虛基類的派生類的對(duì)象時(shí),為什么由最遠(yuǎn)派生類的構(gòu)造函數(shù)負(fù)責(zé)虛基類的 初始化 3. 選擇題 下面對(duì)派生類的描述中,錯(cuò)誤的是(D ) O A. 一個(gè)派生類可以作為另外一個(gè)派生類的基類 B. 派生類至少有一個(gè)基類 C. 派生類的成員除了它自己的成員外,還包含了它的基類的成員 D. 派生類中繼承的基類成員的訪問(wèn)權(quán)限到派生類中保持不變 下列對(duì)友元

3、關(guān)系敘述正確的是(A)。 A.不能繼承 B. 是類與類的關(guān)系 C. 是一個(gè)類的成員函數(shù)與另一個(gè)類的關(guān)系 D. 提高程序的運(yùn)行效率 A.任何成員 C.公有成員和私有成員 設(shè)置虛基類的目的是(B)。 A.簡(jiǎn)化程序 C.提高運(yùn)行效率 在公有派生情況下,有關(guān)派生類對(duì)象和基類對(duì)象的關(guān)系, 當(dāng)保護(hù)繼承時(shí),基類的(B)在派生類中成為保護(hù)成員,不能通過(guò)派生類的對(duì)象來(lái)直接訪問(wèn)。 B.公有成員和保護(hù)成員 D.私有成員 B. 消除二義性 D. 減少目標(biāo)代碼 不正確的敘述是(C。 A. 派生類的對(duì)象町以賦給基類的對(duì)象 B. 派生類的對(duì)象可以初始化基類的引用 C. 派生類的對(duì)象可以直接訪問(wèn)基類中的成員 D派生類的對(duì)象的

4、地址可以賦給指向基類的指針 有如下類定義: class MyBASE int k; public: void set(int n) k=n; int get( ) const return k: class HyDERIVED: protected MyBASE protected; int j; public: void set (int m, int n)MyBASE:set(m);j=n: int get( ) constretxirn MyBASE:get( )+j; 則類MyDERIVED中保護(hù)成員個(gè)數(shù)是(B)。 A 4 B 3 C. 2 D. 1 程序如下: #include us

5、ing namespace std: class A public: A( ) coutW A” ; class B public:B( ) cout B ; : class C: public A B b: public: C( ) cout C ; int tnain( ) C obj: return 0: 執(zhí)行后的輸出結(jié)果是(D)。 A. CBA B. BAC C ACB D. ABC 類0世義了私有函數(shù)FloP和Q為0的派生類,左義為class P: protected 。; class Q: public 0 Q (C)可以訪問(wèn) FIq A0的對(duì)象 B. P類內(nèi) C. 0類內(nèi) DQ類

6、內(nèi) 有如下類定義: class XA int X: public: XA(int n) x=n; class XB: public XA int y; public: XB(int a, int b); 在構(gòu)造函數(shù)XB的下列定義中,正確的是(B) O A. XB: :XB (int a. int b): x(a), y B. XB: :XB (int a. int b): XA(a), y (b) C XB: :XB (int a. int b): x(a), XB (b) D XB: :XB (int a. int b): XA(a), XBCb) 有如下程序: #includeiostre

7、am using namespace std: class Basel private: cout* funl ; const void funl() protected: void fun2() public: void fun3() const const cout fun2 ; cout fun3 ; class Derived : protected Basel public: void fun4( ) const cout fun4 ; int mainO Derived obj: (): (): (): ():/ K中沒(méi)有語(yǔ)法錯(cuò)誤的語(yǔ)句是(D )。 AB C D 4. 寫出程序運(yùn)行

8、結(jié)果 #include using namespace std: class Bl public: Bl(int i) cout constructing Bl iendl; B1( ) cout destructing Bl endl; class B2 public: B2( ) coutconstructing B3 * Xendl; 、B2( ) cout destructing B3 memberBl (b) , j (c) private: Bl memberBl: B2 memberB2: int tnain( ) C obj(l,2,3); constructing const

9、ructing constructing constructing destructing : destructing 1 destructing : :Bl :B3 :Bl :B3 B3 Bl B3 destructing Bl #include using namespace std: class B public: void fl()coutB:flendl class D:public B public: void f10 coutD:flendl; void f(B f(rbl): f(rb2); return 0: B:;fl B:;fl 5. 編程題 定義一個(gè)Point類,派生岀

10、Rectangle類和Circle類,計(jì)算$派生類對(duì)象的而積Area ()。 #includeiostream using namespace std: const double PI=; class Point public: Point(double x=0, double y=0) X=x:Y=y: void ShowPoint 0 cout(X Xp *) *endl: private: double X,Y; class Rectangle: public Point public: Rectangle (double w, double h, double x, double y)

11、:Point(x, y) width=w, height=h:Area(); void Area 0 area= width*height: void ShowArea0 coutRectangle Area=areaendl; private: double width, height,area; class Circle: public Point public: Circle(double r, double x, double y):Point(x y) radius=r:Area(); void Area 0 area= PI*radius*radius: void ShowArea

12、 0 coutCircle Area=areaendl: private: double radius, area: int mainO Rectangle r (10, Circle c(4. 3, 5); 0: 0: return 0: 設(shè)討個(gè)建筑物類Building .由它派生出教學(xué)樓Teach-Building和宿舍樓類 Dorm-Bu訂ding,前者包括教學(xué)樓編號(hào)、層數(shù)、教室數(shù)、總而積等基本信息,后考包括宿舍 樓編號(hào)、層數(shù)、宿舍數(shù)、總而積和容納學(xué)生總?cè)藬?shù)等基本信息。 #include #include using namespace std: enura AMPMAM=1, PM;

13、class Building! public: Building(char *); void ShowBuilding0 coutName; protected: char Name30; Building::Building(char *narae) strcpy(Name name); class Teach-Building: public Building public: Teach_Buildingchar *, int,int, int,int); void ShowTeach_Building() Building;:ShowBuilding0; cout Xo:*No: cou

14、t Floors:Floors; cout ClassRooms: *ClassRooms: cout Area:*Areaendl; protected: int No, Floors, ClassRooms, Area; Teach_Building::Teach_Building(char*name,int no,int fl, int cr,int ar):Building(name) No=no;Floors=f1;ClassRooms=cr;Area=ar; class Dorm_Building:public Building public: Dorm_Bui 1 ding (c

15、har *, int, int, int, int, int); void ShowDorm_Building() Building::ShowBuilding0; Xo:No: Floors:Floors: DormRooms:*DonnRooms; Area:Area; StudentXum: *StudentXumendl; cout cout cout cout cout protected: int No, Floors, DorraRooms, Area, StudentNum; Dorra_Building;: Dorm_Bui1ding(char *name, int no,

16、int fl, int dr,int ar,int sn):Building(name) No=no;Floors=f1;DorinRooms=dr;Area=ar;StudentNum=sn: int mainO Teach_Building tbC主教學(xué)樓,59, 6, 66, 18000); Dorm_Building dbC北苑男生宿舍,41, 5, 75, 3750, 300); 0: 0: return 0: 定義并描述一個(gè)Table類和一個(gè)Circle類,由它們共同派生出RoundTable類。 (這題做得不太滿意) #includeiostream using namespac

17、e std: class Table public: Table(int legs) Legs=legs: protected: int Legs: class Circle public: Circle(int radius) Radius=radius; protected: int Radius: class RoundTable:public Table, public Circle! public: RoundTable(int legs,int radius):Table(legs), Circle(radius) protected: int mainO return 0: 利用

18、第四章習(xí)題Clock類,派生一個(gè)帶“AM”、“PH”的新時(shí)鐘類XewClock- #include using namespace std: enum AMPMiAM=l, PM; class Clock public: Clock(int=0, int=0, int s=0); void ShowTimeO coutHour*: Second; private: int Hour Minute, Second; Clock:Clock(int h, int m, int s) Hour=h;Minute=m;Second=s; class NewClock: public Clock pub

19、lic: XewClockO ; XewClock(Clock c,AMPH ap):Clock(c) Ap=ap; void ShowTimeO Clock::ShowTime0; cout(Ap=AM AM: ” Pir)endl; private: AMPM Ap; int mainO XewClock nc (Clock (8, 23, 34), AMPM(2); 0: return 0: 利用XewClock類対Date類定義一個(gè)帶日期的時(shí)鐘類ClockwithDatec對(duì)該類對(duì)彖能進(jìn)行增 加減少秒數(shù)操作。 #include using namespace std: enum AMP

20、MAM=1, PM: class Clock! public: Clock(int=0 int=0 int s=0); void ShowTimeO coutHour*: int, int); ShowDateO ; Date(int=1900, int=b int =1); void void void void const int Date: :days = a 31,2 Date;:Date(int y, int m, int d) SetDate(y, m, d); void Date::SetDate(int y, int m, int d) Year=(y=1900 else re

21、turn Day=daysMonth: void Date:Increment(int n) int i; for(i=l;i=n;i+) if (EndofMonthO else if(EndofMonth() Month-H- ; Day=l; else Day+; void Date::Decrement(int n) int i; for(i=l;i=n;i+) 辻(Day=l) if(Month=l) Year一: Month=12; Day=31; else 辻(Month=3) Day=LeapYear()29:28:Month=2; else Day=daysMonth; else Day; void Date::ShowDate() coutYear-*Month -* AMPM ap):Date(d), XewClock(c, ap) voi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論