




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、多重繼承多重繼承一個派生類可以有多個基類派生類同時繼承多個基類的成員,更好的軟件重用多重繼承時派生類構造時, 基類構造函數的調用順序與派生類聲明的繼承順序相同, 而與成員初始化序列的順序無關. 而析構函數的調用順序和構造函數的調用順序相反. 例、class C:public A,public B ;多重繼承可能會有大量的二義性,多個基類中可能包含同名變量或函數,而且出現(xiàn)基類中的一個數據被拷貝多份現(xiàn)象,既占用內存單元,在訪問這些成員時也容易出錯。多重繼承B(int data)A(int data)C(int data)Dvoid show()coutdata;多重繼承多重繼承中解決訪問歧義的方法
2、(1)明確指明要訪問定義于哪個基類中的成員基類名 : 數據成員名(或成員函數(參數表)) (2)采用虛擬繼承的方法-即虛基類虛擬繼承-虛基類的初始化 類成員的初始化可以通過創(chuàng)建類對象時調用它的構造函數來完成,還可以由它的派生類調用它的構造函數來完成。 思考:一個虛基類可能有多個的直接派生類和間接派生類,那么在這些派生類中是否有必要對此虛基類進行多次初始化呢? 多重繼承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(); /調用基類對象的show函數 基類對象派生類對象指向基類對象的指針變量也可以指向派生類對象 例如:定義一個基類student(學生),再定義student的公有派生類graduate(研究生),用指向基類對象的指針輸
6、出數據?;悓ο笈缮悓ο?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類之間的關系是(is_a)類的繼承中學和學校,中學是學校,學校不能擁有中學,中學是學校的一個特例,是某一種學校有(has_a)類的復合班級和學校,班級不是學校,學校擁有班級,班級是學校的一部分,再如Pc機類,Cpu類,Storage類,I/O類is_a和has_ahas_a的例子:#include class stud
8、ent public: student() cout“student”endl; private: int semeshours; /總學時 float gpa; /平均學分;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練習 1、創(chuàng)建一個circuit類,該類使用三個數據成員存儲電路的電阻(R)
9、、輸入電壓(intv)和電流(A)。 Circuit類還有以下成員函數: -一個帶有初始化數據成員參數的構造函數 -一個計算、返回電流的函數(即輸入電壓除以電阻) -一個顯示電阻、電流和輸入電壓的函數。 is_a和has_a創(chuàng)建一個繼承circuit的所有成員的amplifier類,除circuit類成員外,還有一些特定的成員: - 數據成員gain和輸出電壓outv - 一個帶有初始化數據成員參數的構造函數 -一個計算、返回輸出電壓的函數(輸入電壓乘以gain)設計函數實例化類的一個對象,然后使用對象來調用所有成員函數。is_a和has_a2、設計一個帶有下列成員的risistor類: - 一個用來保存電阻的數據成員 - 一個帶有用來初始化電阻的參數的構造函數 -一個返回電阻值的函數 -一個顯示下列消息的析構函數 resistor is d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年山東省煙臺市高一下學期期中政治(等級考)試題及答案
- 衛(wèi)星通信在社區(qū)教育服務中的普及考核試卷
- 《 現(xiàn)代質量管理(第3版)》-05 過程統(tǒng)計控制統(tǒng)一
- 2025屆安康市重點中學高二下化學期末考試模擬試題含解析
- 2025至2030年中國陶瓷餐具套裝行業(yè)投資前景及策略咨詢報告
- 2025至2030年中國白鵝絨行業(yè)投資前景及策略咨詢報告
- 鄭州統(tǒng)考播音題目及答案
- 2025至2030年中國雙耳湯鍋行業(yè)投資前景及策略咨詢報告
- 2025年中國32W電子鎮(zhèn)流器式吸頂燈行業(yè)投資前景及策略咨詢研究報告
- 2025年中國銀絲面料行業(yè)投資前景及策略咨詢研究報告
- 施工現(xiàn)場平面布置及臨時設施、臨時道路布置
- 小學六年級課后服務:scratch少兒編程 四階第19課:BMI指數(上)
- 科技人才評價規(guī)范
- 《短視頻編輯與制作(第2版)》-第9章
- 醫(yī)院無菌操作知識培訓
- 年產500噸40gL煙嘧磺隆可分散油懸浮劑農藥項目環(huán)境影響評價報告表樣本
- 介紹方志敏(修訂版)
- 《操作風險管理》課件
- (完整文本版)新概念英語第一冊單詞表默寫版1-144
- 醫(yī)師入職測考試試題答案(臨床)
- 鋼結構門頭專項施工方案
評論
0/150
提交評論