C 多重繼承

2021-07-28 16:06:52 字數 1498 閱讀 2256

在實際中,乙個派生類可以派生出兩個或者多個基類,派生類從兩個或者多個基類中繼承所需要的屬性,在這種情況下,c++允許乙個派生類同時繼承多個基類。這稱為多重繼承。

多重繼承的宣告方法:

class d:public a,private:b,protected c

d是多重繼承的派生類,它以公有繼承的方式繼承a類,以私有繼承的方式繼承b類,以保護繼承的方式繼承c類。按照不同的方式繼承a,b,c屬性,確定各基類的成員在派生中的訪問許可權。

多重派生的建構函式

派生類建構函式名(總引數列表)基類1建構函式(引數列表),基類2建構函式(引數列表),基類2建構函式(引數列表),基類3建構函式(引數列表)

多重繼承會繼承引起二義性問題

(1)兩個基類中有同名的成員

class a

;classb

;class c:public a, public b

;

在main函式中定義了c類物件c1:

c c1;

c1.a=3;

c1.display();

由於基類中a和b中都有成員 a 和成員函式 display,編譯系統無法判別要訪問的哪乙個基類成員。可以用基類名限定:

c1.a::a =3;

c1.a:display();

(2)兩個基類和派生類中都有同名成員,修改c類:

class c:public a, public b

;

同樣的,在main中如下定義:

c c1;

c1.a=3;

c1.display();

則系統訪問的是派生c中成員。

規則是:基類中的派生類成員被覆蓋,遮蔽,或者說是不可見的,或者說是:派生類中的同名成員覆蓋了基類的同名函式。

(3)類a和b是從同乙個基類派生的。

class n

;class a:public n

;class b:public n

;class c:public a,public b

;int main()

從程式中,我們可以得到c類中的資料成員和成員函式:

資料成員:

int a::a;

int a::a1;

int b::a;

int b::a2;

int a3;

成員函式:

void a::display();

void b:display();

void show();

如果要訪問類n的派生類a的基類成員

c1.a::a=3;

c1.a::display();

多重繼承 C 中的多重繼承

多重繼承是c 的一項功能,其中乙個類可以從多個類繼承。繼承類的建構函式以它們繼承的相同順序被呼叫。例如,在以下程式中,在a的建構函式之前呼叫b的建構函式。include using namespace std class a class b class c public b,public a not...

c 多重繼承

其實想寫這篇文章,是因為突然在整理論壇上的帖子的時候,突然發現乙個人問我如何才能在c 中實現多重繼承,當時我答的很隱晦,因此這裡我想補充說明一下.首先,我要說明一下,c 中是沒有類的多重繼承這個概念.要使用多重繼承必須要通過介面inte ce來完成.可是大家都知道inte ce實際上就是乙個虛函式列...

C 多重繼承

c 中的多繼承可看做是單繼承的擴充套件,就是乙個派生類對應多個基類。以下是一段多重繼承的 class a class b class c public a,public b 以上的程式中,派生類c繼承了基類a b。派生類c中,公有繼承了a,所以c的共有成員中有a中的兩個共有成員函式,而私有繼承的b基...