天天看點

多重繼承和虛繼承多重繼承虛繼承特殊的初始化語句同名函數

多重繼承

從概念上來看,多重繼承很簡單:派生類可以繼承多個直接基類,派生類對象由派生部分和每個基類貢獻的基類部分組成。

虛繼承

在多重繼承下,一個基類可以在派生層次中出現多次。虛繼承可以解決這個問題。它是一種機制,類通過虛繼承指出它希望共享其虛基類的狀态。在虛繼承下,對給定的虛基類,無論該類在派生層次中作為虛基類出現了多少次,隻繼承一個共享的基類子對象。共享的基類子對象被稱為虛基類。

通過在派生清單中包含關鍵字virtual設定虛基類: class istream : public virtual ios {...} class ostream : virtual public ios {...}

class iostream : public istream,ostream {...}

特殊的初始化語句

在虛派生中,由最低層派生類的構造函數初始化虛基類。例如,當建立iostream對象的時候,隻有iostream構造函數控制怎麼初始化ios基類。 無論虛基類出現在繼承層次中任何地方,總是在構造非虛基類之前構造虛基類。

同名函數

在多重繼承的時候,如果一個類同時繼承自class A和class B,而class A和class B中都有一個函數foo()。如果C繼承自A和B,那麼C.A::foo()和C.B::foo()分别代表從A類中繼承的foo函數和從B類中繼承的foo函數。

繼續閱讀