




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第七章 派生與繼承1.單選題(1)下列關(guān)于繼承的描述中,錯誤的是( B )。A繼承是重用性的重要機(jī)制BC+語言支持單重繼承和雙重繼承C繼承關(guān)系不是可逆的D繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)語言的重要特性(2)下列關(guān)于基類和派生類的描述中,錯誤的是( C )。A一個基類可以生成多個派生類B基類中所有成員都是它的派生類的成員C基類中成員訪問權(quán)限繼承到派生類中不變D派生類中除了繼承的基類成員還有自己的成員(3)下列關(guān)于派生類的描述中,錯誤的是( D )。A派生類至少有一個基類B一個派生類可以作另一個派生類的基類C派生類的構(gòu)造函數(shù)中應(yīng)包含直接基類的構(gòu)造函數(shù)D派生類默認(rèn)的繼承方式是public(4)派生類的對象可以
2、直接訪問的基類成員是( A )。A公有繼承的公有成員B保護(hù)繼承的公有成員C私有繼承的公有成員D公有繼承的保護(hù)成員(5)下列描述中,錯誤的是( D )。A基類的protected成員在public派生類中仍然是protected成員B基類的private成員在public派生類中是不可訪問的C基類public成員在private派生類中是private成員D基類public成員在protected派生類中仍是public成員(6)派生類構(gòu)造函數(shù)的成員初始化列表中,不能包含的初始化項(xiàng)是( B )。A基類的構(gòu)造函數(shù)B基類的子對象C派生類的子對象D派生類自身的數(shù)據(jù)成員(7)下列關(guān)于子類型的描述中,錯誤
3、的是( B )。A在公有繼承下,派生類是基類的子類型B如果類A是類B的子類型,則類B也是類A的子類型C如果類A是類B的子類型,則類A的對象就是類B的對象D在公有繼承下,派生類對象可以初始化基類的對象引用(8)下列關(guān)于多繼承二義性的描述中,錯誤的是( D )。A一個派生類的多個基類中出現(xiàn)了同名成員時(shí),派生類對同名成員的訪問可能出現(xiàn)二義性B一個派生類有多個基類,而這些基類又有一個共同的基類,派生類訪問公共基類成員時(shí),可能出現(xiàn)二義性C解決二義性的方法是采用類名限定D基類和派生類中同時(shí)出現(xiàn)同名成員時(shí),會產(chǎn)生二義性2多重繼承與單一繼承的區(qū)別是什么?答:派生類只有一個基類的稱為單一繼承。單一繼承的定義格式
4、為:class: 派生類中新成員定義派生類有兩個或兩個以上的基類稱為多重繼承。多重繼承的定義格式為:class:, 派生類中新成員定義3繼承有哪三種繼承方式,各自有何特點(diǎn)?答:繼承方式主要表示派生類繼承基類時(shí)采用的繼承方式,主要有三種,即公有繼承、私有繼承和保護(hù)繼承。(1)公有繼承(public)。公有繼承的特點(diǎn)是基類的公有成員和保護(hù)成員作為派生類的成員時(shí),它們都保持原有的狀態(tài),而基類的私有成員仍然是私有的。(2)私有繼承(private)私有繼承的特點(diǎn)是基類的公有成員和保護(hù)成員作為派生類的私有成員,并且不能被這個派生類的子類訪問。(3)保護(hù)繼承(protected)保護(hù)繼承的特點(diǎn)是基類的所有
5、公有成員和保護(hù)成員都成為派生類的保護(hù)成員,并且只能被它的派生類成員函數(shù)或友元訪問,基類的私有成員仍然是私有的。4.在定義派生類的過程中,如何對基類的數(shù)據(jù)成員進(jìn)行初始化?答: 由于基類在派生類中通常是隱藏的,所以依序通過調(diào)用基類的構(gòu)造函數(shù)來設(shè)定基類的數(shù)據(jù)成員的初值。它的格式為(形參表):基類1(參數(shù)表),基類2(參數(shù)表)對象成員1(參數(shù)表),對象成員2(參數(shù)表)5.什么是賦值兼容規(guī)則?賦值兼容規(guī)則的實(shí)質(zhì)是什么?試舉例說明。答:賦值兼容規(guī)則是指,對于共有派生類來說,可以將派生類的對象賦值給其基類。它實(shí)質(zhì)上就是基類對象的內(nèi)存空間和派生類對象中基類拷貝的內(nèi)存空間引用的兼容。6.什么是虛基類?它的作用是
6、什么?答:虛基類不是指基類是虛的,而是指在派生類中指定的基類是虛繼承的方式。使用虛基類的目的是在多重派生中使用共有基類在派生類中只有一個拷貝從而解決有多個基類拷貝所產(chǎn)生的二義性問題。7. 分析下列程序的運(yùn)行結(jié)果。#includeclass Aprivate: int a; public:A(int i=0) a=i; void show()couta=aendl;class B private:int b; public:B(int i=0)b=i;void show() coutb=bendl;class C:public A,public Bprivate: int c; public:
7、C(int i=0,int j=0,int k=0):A(i),B(j) c=k; void show() A:show(); B:show(); coutc=cendl;void main() B b(12); b.show(); C c1,c2(30,40),c3(70,80,90); c1.show(); c2.show(); c3.show(); c2.B:show();答:程序運(yùn)行結(jié)果:b=12a=0b=0c=0a=30b=40c=0a=70b=80c=90b=40分析:(1)本程序是多重繼承的程序,類C繼承了類A和類B的數(shù)據(jù)成員。(2)在主程序中,分別對類C的對象c1、c2、c3賦
8、不同的值,則對類A和類B數(shù)據(jù)成員的賦值也不一樣。8. 分析下列程序的運(yùn)行結(jié)果。#includeclass Base1 public : Base1( int i ) cout 調(diào)用基類Base1的構(gòu)造函數(shù): i endl ; ;class Base2 public: Base2( int j ) cout 調(diào)用基類Base2的構(gòu)造函數(shù): j endl ; ; class A : public Base1, public Base2 public : A( int a, int b, int c, int d ) : Base2(b), Base1(c), b2(a), b1(d) cout 調(diào)
9、用派生類A的構(gòu)造函數(shù): a+b+c+d endl; private : Base1 b1 ; Base2 b2 ; ; int main() A obj( 1, 2, 3, 4 ); 答:調(diào)用基類BASE1的構(gòu)造函數(shù):3調(diào)用基類BASE2的構(gòu)造函數(shù):2調(diào)用基類BASE1的構(gòu)造函數(shù):4調(diào)用基類BASE2構(gòu)造函數(shù):1調(diào)用派生類A的構(gòu)造函數(shù):109. 分析下列程序的運(yùn)行結(jié)果。#includeclass A public : A(const char *s) cout s endl ; A();class B : virtual public A public : B(const char *s1,
10、const char *s2) : A( s1 ) cout s2 endl ; ;class C : virtual public A public : C(const char *s1, const char *s2):A(s1) cout s2 endl ; ;class D : public B, public C public : D( const char *s1, const char *s2, const char *s3, const char *s4 ) : B( s1, s2 ), C( s1, s3 ), A( s1 ) cout s4 endl ; ;int main
11、() D *ptr = new D( class A, class B, class C, class D ) ; delete ptr;答:class Aclass Bclass Cclass D10. 有人定義一個教師類派生一個學(xué)生類。他認(rèn)為“姓名”和“性別”是教師、學(xué)生共有的屬性,聲明為public,“職稱”和“工資”是教師特有的,聲明為private。在學(xué)生類中定義特有的屬性“班級”和“成績”。所以有class teacher public :char name20; char sex;/ Private :char title20; double salary; class stud
12、ent : public teacher /private : char grade20 ; int score;你認(rèn)為這樣定義合適嗎?請做出你認(rèn)為合理的類結(jié)構(gòu)定義。答:不合適,這樣導(dǎo)致數(shù)據(jù)冗余。合理的結(jié)構(gòu)是提取它們共有的數(shù)據(jù)和操作定義一個基類,然后分別定義teacher和student作為派生類。class person protected:char name20; char sex;/;class teacher : public teache / private:char title20; double salary; class student : public teacher /pr
13、ivate : char grade20 ; int score;11. 定義一個描述坐標(biāo)位置的類location,從location派生出正方形類square,在正方形類中將location類作為正方形的起始點(diǎn),并求正方形的周長和面積。答:#includeclass locationprotected: int x,y; public:location(int a=0,int b=0) x=a;y=b;class square:public location private:int len;int girth;int area; public: square(int x,int y,int
14、t):location(x,y) len=t; void set(); void show();void square :set() girth=4*len; area=len*len;void square :show() cout正方形的坐標(biāo)點(diǎn)為:x,yendl; cout正方形的周長為:girthendl; cout正方形的面積為:areaendl;void main() square m(10,10,5); m.set(); m.show(); 12. 把定義平面直角坐標(biāo)系上的一個點(diǎn)的類Point作為基類,派生出描述一條直線的類Line,再派生出一個矩形類Rect。要求成員函數(shù)能求出兩
15、點(diǎn)間的距離,矩形的周長和面積等。設(shè)計(jì)一個測試程序,并構(gòu)造完整的程序。答:#include#includeusing namespace std;class Pointpublic:Point(int x=0,int y=0)this-x=x;this-y=y;public :int x,y;class Line:public Pointpublic:Line(int x1=0,int y1=0,int x2=0,int y2=0):a(x1,y1),b(x2,y2)double Length()int s= a.x-b.x;int t= a.y-b.y;return sqrt(s*s+t*t)
16、;private:Point a,b;class Rect:public Linepublic: Rect(int x1,int y1,int x2,int y2 ):l1(x1,y1,x1,y2),l2(x1,y1,x2,y1)/x1,y1是矩形左下角的坐標(biāo),x2,y2是矩形右上角的坐標(biāo)double SumLength ()/cout矩形的周長是endl;return (l1.Length()+l2.Length()*2;double square ()/cout矩形的周長是endl;return l1.Length()*l2.Length();private:Line l1,l2;void
17、 main()Line line(0,0,10,0);cout這條線段的長度為:line.Length ();Rect rect(0,0,10,10); cout矩形的周長是rect.SumLength()endl;cout矩形的周長是rect.square ()endl;13. 假設(shè)某銷售公司有銷售經(jīng)理和銷售員工,月工資的計(jì)算辦法是:銷售經(jīng)理的固定月薪為8000元并提取銷售額的5/1000作為工資;銷售員工只提取銷售額的5/1000作為工資。編一程序,定義一個基類Employee,它包含三個數(shù)據(jù)成員number、name和salary,以及用于輸入編號和姓名的構(gòu)造函數(shù)。由Employee類派
18、生Salesman類,再由Salesman類派生Salesmanager類。Salesman類包含兩個新數(shù)據(jù)成員 commrate和sales,還包含用于輸入銷售額并計(jì)算銷售員工工資的成員函數(shù)pay和用于輸出的成員函數(shù)print。Salesmanager類包含新數(shù)據(jù)成員 monthlypay,以及用于輸入銷售額并計(jì)算銷售經(jīng)理工資的成員函數(shù)pay、用于輸出的成員函數(shù)print()。在main函數(shù)中,測試你的類結(jié)構(gòu),求若干個不同員工的工資。答:#include using namespace std;class employee public: employee() cout number; co
19、ut name; salary = 0;protected: char number5; char name10; double salary; ;class salesman: public employee public:salesman() commrate = 0.005; void pay() coutname sales; salary = sales*commrate;void print() cout銷售員 :name編號:number本月工資:salaryendl; protected:double commrate;double sales; ;class salesman
20、ager: public salesman public: salesmanager() monthlypay = 8000; commrate = 0.005; void pay() coutname sales; salary = monthlypay + sales*commrate; void print() cout銷售經(jīng)理 :name編號:number本月工資:salaryendl; private: double monthlypay;int main() salesman obj1; obj1.pay(); obj1.print(); salesmanager obj2; ob
21、j2.pay(); obj2.print();14. 編寫一個程序?qū)崿F(xiàn)那一個班級學(xué)生的學(xué)期成績管理。個人信息類Person的數(shù)據(jù)成員有:姓名,年齡,性別;課程類Course的數(shù)據(jù)成員有:課程名,學(xué)分,成績;學(xué)生類Student從Person類派生,并增加數(shù)據(jù)成員:學(xué)號,Course對象數(shù)據(jù)成員數(shù)組(大小為8),總成績,總學(xué)分和平均成績;班級類Class類的數(shù)據(jù)成員有:Student類對象成員數(shù)組(大小由構(gòu)造函數(shù)確定),班號,班級人數(shù)等。要求:(1)本班級Class類的對象成員數(shù)組需要在構(gòu)造函數(shù)中用new動態(tài)分配內(nèi)存空間,在析構(gòu)函數(shù)中釋放。在類Class中添加成員函數(shù)Seek,通過學(xué)號查找并輸出
22、該學(xué)生的全部信息。(2)構(gòu)造三個學(xué)生的數(shù)據(jù),每個學(xué)生都有三門課程的成績,輸入并顯示這些數(shù)據(jù)。(3)根據(jù)類的需要添加適當(dāng)?shù)钠渌蓡T,編寫完整的程序并測試。答:#include#includeclass Personpublic:Person(char *name ,int age,char sex=M)strncpy(this-name,name ,20);this-age=age ;this-sex=sex;void show()cout學(xué)生的名字是:nameendl;cout學(xué)生的年齡是:ageendl;cout學(xué)生的性別是:sexendl;private :char name20;int age;char sex;class Coursepublic:Course()cout請輸入課程名,學(xué)分和分?jǐn)?shù)coursenamecreditscore;public:char coursename20;float score;float cre
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七年級英語下冊 Unit 6 I'm watching TV Section B第4課時(shí)(2a-2c)教學(xué)設(shè)計(jì) (新版)人教新目標(biāo)版
- 10 在牛肚子里旅行(教學(xué)設(shè)計(jì))2024-2025學(xué)年統(tǒng)編版三年級語文上冊
- 2024-2025學(xué)年高中歷史 第二單元 凡爾賽-華盛頓體系下的短暫和平 第6課 國際聯(lián)盟教學(xué)教學(xué)設(shè)計(jì) 岳麓版選修3
- Unit 1 Home-Reading(教學(xué)設(shè)計(jì))2024-2025學(xué)年譯林版(2024)英語七年級下冊
- 裝飾施工現(xiàn)場安全用電
- 2024秋九年級語文上冊 第1單元 3我愛這土地教學(xué)設(shè)計(jì) 新人教版
- 管理學(xué)矩陣結(jié)構(gòu)
- 《煎荷包蛋》(教案)-2023-2024學(xué)年四年級下冊勞動人教版
- 一年級道德與法治下冊 第四單元 我們在一起 14 請幫我一下吧教學(xué)設(shè)計(jì)2 新人教版
- 2024-2025學(xué)年高中生物 第二章 基因和染色體的關(guān)系 第1節(jié) 減數(shù)分裂和受精作用 一 減數(shù)分裂教學(xué)設(shè)計(jì)3 新人教版必修2
- (2024年更新)國家慢性疾病編碼新目錄
- 治療室物品分類擺放
- 一次性使用醫(yī)療用品管理制度
- 獸醫(yī)屠宰衛(wèi)生人員考試題庫及答案(415題)
- 商務(wù)預(yù)算員培訓(xùn)課件
- 物業(yè)合同增加人員補(bǔ)充協(xié)議書(2篇)
- 房屋中介公司員工管理規(guī)章制度
- 餐飲服務(wù)電子教案 學(xué)習(xí)任務(wù)3 餐巾折花技能(4)-餐巾折花綜合實(shí)訓(xùn)
- 先天性唇腭裂與顱面裂的診斷及治療(口腔頜面外科學(xué)課件)
- 醉里乾坤大壺中日月長-初中語文九年級第六單元名著導(dǎo)讀《水滸傳》整本書閱讀精讀研討課 公開課一等獎創(chuàng)新教學(xué)設(shè)計(jì)
- TCECA-G 0310-2024 離網(wǎng)制氫靈活消納與柔性化工系統(tǒng)開發(fā)規(guī)范
評論
0/150
提交評論