在實際中,乙個派生類可以派生出兩個或者多個基類,派生類從兩個或者多個基類中繼承所需要的屬性,在這種情況下,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基...