基於虛基類的多重繼承設計

2021-08-14 08:10:30 字數 1268 閱讀 3565

題目描述:利於虛基類建立乙個類的多重繼承,包含動物(aninal,屬性有名稱,體長,體重和性別),陸生動物(ter_animal,s屬性增加了奔跑速度),水生動物(aqu_animal,屬性增加了游泳速度)和兩棲動物(amp_animal),其中兩棲動物保留了陸生動物和水生動物的屬性。

1、完成4個類的無參和全參建構函式

2、為兩棲動物類設計input函式。可以從鍵盤輸入動物屬性

3、為兩棲動物類設計display函式,可以輸出動物屬性

4、在主函式中宣告兩棲動物陣列,包含3個兩棲動物,呼叫input()函式從鍵盤輸入3個兩棲動物的名稱 、體長、體重、性別、奔跑速度和游泳速度,按游泳速度從快到慢排序後,在呼叫display()函式輸出這3個兩棲動物的資訊

#include#includeusing namespace std;

//基類

class animal

animal(string nam,string s,float l,float w):name(nam),***(s),length(l),weight(w){}

void input0();

void output0()

//直接派生類,繼承虛基類

class ter_animal:virtual public animal

ter_animal(string nam,string s,float l,float w,int sp):animal(nam,s,l,w)

void input1()

protected:

int runspeed;

};//直接派生類,繼承虛基類

class aqu_animal:virtual public animal

aqu_animal(string nam,string s,float l,float w,int sp):animal(nam,s,l,w)

void input2()

int swimspeed;

};//多重繼承的派生類

class amp_animal:public ter_animal,public aqu_animal

amp_animal(string nam,string s,float l,float w,int sp1,int sp2):animal(nam,s,l,w),ter_animal(nam,s,l,w,sp1),aqu_animal(nam,s,l,w,sp2){}

void input()

int main()

多重繼承 虛繼承與虛基類

一 多重繼承 單重繼承 乙個派生類最多只能有乙個基類 多重繼承 乙個派生類可以有多個基類 class 類名 繼承方式 基類1,繼承方式 基類2,派生類同時繼承多個基類的成員,更好的軟體重用 可能會有大量的二義性,多個基類中可能包含同名變數或函式 多重繼承中解決訪問歧義的方法 基類名 資料成員名 或成...

多重繼承與虛基類

多重繼承 multiple inheritance,mi 虛基類虛基類使得從多個類 它們的基類相同 派生出的物件只繼承乙個基類物件。通過使用關鍵字virtual。例如,可以使worker被用作singer和waiter的虛基類 virtual和public的次序無關緊要 class singer v...

C 多重繼承 虛基類

使用多個基類的繼承被稱為多重繼承 mi mi描述的是有多個直接基類的類。與單繼承一樣,公有mi表示的也是 is a關係。mi帶來的兩個主要問題 1.從兩個不同的基類繼承同名方法。2.從兩個或更多相關基類那裡繼承同一類的多個例項。例如 singer 和 waiter都繼承了乙個worker 元件,因此...