我有一個關於虛擬基類的查詢。爲了解決多重繼承中「可怕的鑽石死亡」/歧義問題,引入了虛擬基類。C++中的虛擬基類
class A { public: void Foo() {} };
class B : public virtual A {};
class C : public virtual A {};
class D : public B, public C {};
當關鍵字virtual
在class C
聲明不使用會發生什麼。你能詳細解釋我嗎?
class A { public: void Foo() {} };
class B : public virtual A {};
class C : public A {};
class D : public B, public C {};
的可能重複(http://stackoverflow.com/questions/21558/in-c-what - 是一個虛擬基類) – 2013-04-08 07:05:38
旁註:使用合成而不是繼承(使用基於組件的設計模式) – Quonux 2013-04-08 08:41:35
「死亡鑽石」是C++多重繼承中的問題,而不是多重繼承。 – Kaz 2013-06-17 03:13:48