多重繼承有什麼缺陷。

2021-04-25 11:17:32 字數 406 閱讀 8326

在《設計模式》一書中,作者在開篇中就提出了物件導向的兩條基本設計原則: 1

、多對介面程式設計,少對實現程式設計。 2

、多使用聚合,少使用繼承。

繼承的過多使用當然會帶來高耦合,當然聚合的過分會使模組過多。

多重繼承指的是乙個類別可以同時從多於乙個父類繼承行為與特徵的功能,是一種圖狀層次結構

(有向無環圖

)。功能強大,但易引起二義性,占用記憶體比較多。有時多重繼承會出現二義性,比如

class a

class b : public a{}

class c : public a{}

class d : public b, public c

}//多繼承還存在其他複雜問題,如:構造派生物件時基類的初始化順序,以及成員會不小心再派生類中隱藏的問題。

多重繼承與菱形缺陷

多重繼承是 c 語言獨有的繼承方式,其它幾乎所有語言都秉承了單一繼承的思想。這是因為多重繼承致命的缺陷導致的。當繼承基類時,在派生類中就獲得了基類所有的資料成員副本。假如類b從 a1和a2兩個類多重繼承而來,這樣 b類就包含a1 a2類的資料成員副本。考慮如果a1 a2都從某基類派生,該基類稱為 b...

C 為什麼不要多重繼承

不如換種做法?總結多重繼承指的是某個類同時繼承了兩個或以上的其他類。那麼多重繼承存在著什麼問題呢?class machine machine class printer public machine class scanner public machine class printerscanner ...

多重繼承 C 中的多重繼承

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