關於C 的多重繼承

2021-04-13 04:30:35 字數 494 閱讀 8454

今天看設計模式時,書中談到類繼承的用法,就想到在c++中出現這樣一種情況,如果兩個基類有同乙個名字的方法,當乙個類同時繼承這個兩類時該如何呼叫呢?,舉書上的例子來說:

class task;

class displayed;

class satellite:public task,public displayed ;

void f(satellite * sp)

在上述**中,當產生sp->get_debug()這樣的呼叫時就會產生歧義,倒底該呼叫哪乙個類的get_debug() 函式呢?像sp->task::get_debug()這樣的呼叫就不會產生歧義,因為編譯器知道呼叫哪乙個函式。

在上面為消除歧義進行顯示呼叫,顯然這樣的**很不美觀,這樣的呼叫會使**看著比較零亂。如果按照下面的**進行過載就不會出現這樣的問題。因為這樣過載之後呼叫的是區域性函式。

class satellite:public task,public displayed

多重繼承 C 中的多重繼承

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

c 的多重繼承

一 前言 每個類只繼承乙個父輩,在現實世界中事情通常是這樣的,但是有一些類卻代表兩個類的合成。例如兩用沙發,它是一張床,也是乙個沙發。二 示例 用作下面提出問題使用 include using namespace std class bed void setweight int i void sle...

c 多重繼承

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