版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、多重繼承多重繼承一個(gè)派生類可以有多個(gè)基類派生類同時(shí)繼承多個(gè)基類的成員,更好的軟件重用多重繼承時(shí)派生類構(gòu)造時(shí), 基類構(gòu)造函數(shù)的調(diào)用順序與派生類聲明的繼承順序相同, 而與成員初始化序列的順序無關(guān). 而析構(gòu)函數(shù)的調(diào)用順序和構(gòu)造函數(shù)的調(diào)用順序相反. 例、class C:public A,public B ;多重繼承可能會(huì)有大量的二義性,多個(gè)基類中可能包含同名變量或函數(shù),而且出現(xiàn)基類中的一個(gè)數(shù)據(jù)被拷貝多份現(xiàn)象,既占用內(nèi)存單元,在訪問這些成員時(shí)也容易出錯(cuò)。多重繼承B(int data)A(int data)C(int data)Dvoid show()coutdata;多重繼承多重繼承中解決訪問歧義的方法
2、(1)明確指明要訪問定義于哪個(gè)基類中的成員基類名 : 數(shù)據(jù)成員名(或成員函數(shù)(參數(shù)表)) (2)采用虛擬繼承的方法-即虛基類虛擬繼承-虛基類的初始化 類成員的初始化可以通過創(chuàng)建類對象時(shí)調(diào)用它的構(gòu)造函數(shù)來完成,還可以由它的派生類調(diào)用它的構(gòu)造函數(shù)來完成。 思考:一個(gè)虛基類可能有多個(gè)的直接派生類和間接派生類,那么在這些派生類中是否有必要對此虛基類進(jìn)行多次初始化呢? 多重繼承B(int data)A(int data)C(int data)D(int B:data, int C:data)虛擬繼承虛基類的簡單實(shí)例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ù) 基類對象派生類對象指向基類對象的指針變量也可以指向派生類對象 例如:定義一個(gè)基類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é)校的一個(gè)特例,是某一種學(xué)校有(has_a)類的復(fù)合班級和學(xué)校,班級不是學(xué)校,學(xué)校擁有班級,班級是學(xué)校的一部分,再如Pc機(jī)類,Cpu類,Storage類,I/O類is_a和has_ahas_a的例子:#include class stud
8、ent public: student() cout“student”endl; private: int semeshours; /總學(xué)時(shí) 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)建一個(gè)circuit類,該類使用三個(gè)數(shù)據(jù)成員存儲電路的電阻(R)
9、、輸入電壓(intv)和電流(A)。 Circuit類還有以下成員函數(shù): -一個(gè)帶有初始化數(shù)據(jù)成員參數(shù)的構(gòu)造函數(shù) -一個(gè)計(jì)算、返回電流的函數(shù)(即輸入電壓除以電阻) -一個(gè)顯示電阻、電流和輸入電壓的函數(shù)。 is_a和has_a創(chuàng)建一個(gè)繼承circuit的所有成員的amplifier類,除circuit類成員外,還有一些特定的成員: - 數(shù)據(jù)成員gain和輸出電壓outv - 一個(gè)帶有初始化數(shù)據(jù)成員參數(shù)的構(gòu)造函數(shù) -一個(gè)計(jì)算、返回輸出電壓的函數(shù)(輸入電壓乘以gain)設(shè)計(jì)函數(shù)實(shí)例化類的一個(gè)對象,然后使用對象來調(diào)用所有成員函數(shù)。is_a和has_a2、設(shè)計(jì)一個(gè)帶有下列成員的risistor類: - 一個(gè)用來保存電阻的數(shù)據(jù)成員 - 一個(gè)帶有用來初始化電阻的參數(shù)的構(gòu)造函數(shù) -一個(gè)返回電阻值的函數(shù) -一個(gè)顯示下列消息的析構(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)容里面會(huì)有圖紙預(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧石油化工大學(xué)《建筑給水排水工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 蘭州博文科技學(xué)院《大眾健身操》2023-2024學(xué)年第一學(xué)期期末試卷
- 吉林司法警官職業(yè)學(xué)院《焊接先進(jìn)技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南大學(xué)《數(shù)字媒體設(shè)計(jì)與制作-U交互設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 【物理】《物體的浮沉條件及應(yīng)用》(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教版(2024)初中物理八年級下冊
- 重慶海聯(lián)職業(yè)技術(shù)學(xué)院《中學(xué)生物教學(xué)研究與實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州電子信息職業(yè)技術(shù)學(xué)院《材料分析測試技術(shù)(B)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江科技學(xué)院《裝飾圖案設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 中國青年政治學(xué)院《金融社會(huì)工作》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州輕工業(yè)大學(xué)《染整工藝實(shí)驗(yàn)(2)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2023年《早》舒淇早期古裝掰全照原創(chuàng)
- 警用無人機(jī)考試題庫(全真題庫)
- 預(yù)應(yīng)力簡支梁施工
- GB/T 37046-2018信息安全技術(shù)災(zāi)難恢復(fù)服務(wù)能力評估準(zhǔn)則
- 機(jī)井工程抽水試驗(yàn)質(zhì)量驗(yàn)收表
- GA/T 1504-2018互聯(lián)網(wǎng)交通安全綜合服務(wù)管理平臺數(shù)據(jù)接入規(guī)范
- 八年級思想品德中期試卷
- 江西省宜春市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)及行政區(qū)劃代碼
- 氣體滅火系統(tǒng)驗(yàn)收表1
- 幼兒系列故事繪本課件鴨子當(dāng)總統(tǒng)-
- 智慧燃?xì)獍踩O(jiān)管平臺解決方案
評論
0/150
提交評論