版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、多重繼承多重繼承一個派生類可以有多個基類派生類同時繼承多個基類的成員,更好的軟件重用多重繼承時派生類構(gòu)造時, 基類構(gòu)造函數(shù)的調(diào)用順序與派生類聲明的繼承順序相同, 而與成員初始化序列的順序無關(guān). 而析構(gòu)函數(shù)的調(diào)用順序和構(gòu)造函數(shù)的調(diào)用順序相反. 例、class C:public A,public B ;多重繼承可能會有大量的二義性,多個基類中可能包含同名變量或函數(shù),而且出現(xiàn)基類中的一個數(shù)據(jù)被拷貝多份現(xiàn)象,既占用內(nèi)存單元,在訪問這些成員時也容易出錯。多重繼承B(int data)A(int data)C(int data)Dvoid show()coutdata;多重繼承多重繼承中解決訪問歧義的方法
2、(1)明確指明要訪問定義于哪個基類中的成員基類名 : 數(shù)據(jù)成員名(或成員函數(shù)(參數(shù)表)) (2)采用虛擬繼承的方法-即虛基類虛擬繼承-虛基類的初始化 類成員的初始化可以通過創(chuàng)建類對象時調(diào)用它的構(gòu)造函數(shù)來完成,還可以由它的派生類調(diào)用它的構(gòu)造函數(shù)來完成。 思考:一個虛基類可能有多個的直接派生類和間接派生類,那么在這些派生類中是否有必要對此虛基類進行多次初始化呢? 多重繼承B(int data)A(int data)C(int data)D(int B:data, int C:data)虛擬繼承虛基類的簡單實例PeopleName,sex,ageTeacherTitle /職稱Studentscor
3、eGraduateWage /工資Show()/顯示各成員信息虛擬繼承class people public:people(char *pname,char s, int a)strcpy(name, pname);sex=s; age=a;protected:char name20,sex; int age;虛擬繼承class teacher : virtual public people public:teacher(char *str, char s, int a, char *ptitle):people(str,s,a) strcpy(title,ptitle);protected:
4、char title20;虛擬繼承class student : virtual public people public:student(char *str, char s, int a, float sco):people(str,s,a),score(sco) protected:float score;虛擬繼承class graduate : public teacher,public student public: graduate (char *str, char s, int a, float sco,char *ptitle,float w):people(str,s,a),t
5、eacher(str,s,a,ptitle), student(str,s,a,sco),wage(w)虛擬繼承 void show() cout“name:”nameendl;cout“age:”ageendl;cout“sex:”sexendl;cout“title:”titleendl;cout“score:”nameendl;cout“wages:”wageshow(); /調(diào)用基類對象的show函數(shù) 基類對象派生類對象指向基類對象的指針變量也可以指向派生類對象 例如:定義一個基類student(學(xué)生),再定義student的公有派生類graduate(研究生),用指向基類對象的指針輸
6、出數(shù)據(jù)?;悓ο笈缮悓ο?class student public: student(int n,char *str, float sco) num=n; strcpy(name,str); score=sco; void display() cout“num:”numendl; cout“name:”nameendl; cout“score:”scoreendl; protected: float score; int num; char name20; ; 基類對象派生類對象class graduate : public student public:graduate(int n, ch
7、ar *str, float sco,float p):student(n,str,sco),pay(p) void display() student:display(); cout“pay:”payendl;private: float pay;/工資 ;is_a和has_a類之間的關(guān)系是(is_a)類的繼承中學(xué)和學(xué)校,中學(xué)是學(xué)校,學(xué)校不能擁有中學(xué),中學(xué)是學(xué)校的一個特例,是某一種學(xué)校有(has_a)類的復(fù)合班級和學(xué)校,班級不是學(xué)校,學(xué)校擁有班級,班級是學(xué)校的一部分,再如Pc機類,Cpu類,Storage類,I/O類is_a和has_ahas_a的例子:#include class stud
8、ent public: student() cout“student”endl; private: int semeshours; /總學(xué)時 float gpa; /平均學(xué)分;is_a和has_aclass tutorpair() public: tutorpair( ) cout“tutorpair”endl; private: student stu; teacher chen;is_a和has_aint main() tutorpair tp; cout“back in main”endl; is_a和has_a練習(xí) 1、創(chuàng)建一個circuit類,該類使用三個數(shù)據(jù)成員存儲電路的電阻(R)
9、、輸入電壓(intv)和電流(A)。 Circuit類還有以下成員函數(shù): -一個帶有初始化數(shù)據(jù)成員參數(shù)的構(gòu)造函數(shù) -一個計算、返回電流的函數(shù)(即輸入電壓除以電阻) -一個顯示電阻、電流和輸入電壓的函數(shù)。 is_a和has_a創(chuàng)建一個繼承circuit的所有成員的amplifier類,除circuit類成員外,還有一些特定的成員: - 數(shù)據(jù)成員gain和輸出電壓outv - 一個帶有初始化數(shù)據(jù)成員參數(shù)的構(gòu)造函數(shù) -一個計算、返回輸出電壓的函數(shù)(輸入電壓乘以gain)設(shè)計函數(shù)實例化類的一個對象,然后使用對象來調(diào)用所有成員函數(shù)。is_a和has_a2、設(shè)計一個帶有下列成員的risistor類: - 一個用來保存電阻的數(shù)據(jù)成員 - 一個帶有用來初始化電阻的參數(shù)的構(gòu)造函數(shù) -一個返回電阻值的函數(shù) -一個顯示下列消息的析構(gòu)函數(shù) resistor is d
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年電商渠道聯(lián)合運營協(xié)議版B版
- 二零二五年度甲乙雙方合作供應(yīng)新能源設(shè)備協(xié)議2篇
- 二零二五版汽車行業(yè)人才培訓(xùn)股份購買與就業(yè)服務(wù)合同3篇
- 2024新疆瓜果種植基地與電商平臺合作分紅協(xié)議3篇
- 二零二五版礦產(chǎn)廢石采購及再生利用合作協(xié)議3篇
- 西藏藏醫(yī)藥大學(xué)《建筑工程施工》2023-2024學(xué)年第一學(xué)期期末試卷
- 西安工程大學(xué)《歷史教學(xué)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 武漢華夏理工學(xué)院《細胞工程原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度火鍋店裝修工程與商業(yè)運營支持合同3篇
- 2025年度智慧家居產(chǎn)業(yè)合作開發(fā)協(xié)議3篇
- 黃金買賣合同范本
- 米-伊林《十萬個為什么》閱讀練習(xí)+答案
- 碎屑巖油藏注水水質(zhì)指標(biāo)及分析方法
- 【S洲際酒店婚禮策劃方案設(shè)計6800字(論文)】
- 醫(yī)養(yǎng)康養(yǎng)園項目商業(yè)計劃書
- 《穿越迷宮》課件
- 《C語言從入門到精通》培訓(xùn)教程課件
- 2023年中國半導(dǎo)體行業(yè)薪酬及股權(quán)激勵白皮書
- 2024年Minitab全面培訓(xùn)教程
- 社區(qū)電動車棚新(擴)建及修建充電車棚施工方案(純方案-)
- 項目推進與成果交付情況總結(jié)與評估
評論
0/150
提交評論