3 回答

TA貢獻1876條經驗 獲得超5個贊
人們非常正確地說你不需要多重繼承,因為你可以用多重繼承做任何事情,你也可以用單繼承做。你只需使用我提到的委托技巧。此外,您根本不需要任何繼承,因為您使用單繼承執行的任何操作,您也可以通過轉發類來繼承。實際上,您也不需要任何類,因為您可以使用指針和數據結構來完成所有操作。但是你為什么要那樣做呢?什么時候使用語言設施方便?你什么時候想要一個解決方法?我已經看到了多繼承很有用的情況,我甚至看到過很復雜的多繼承很有用的情況。通常,我更喜歡使用該語言提供的功能來進行變通

TA貢獻1744條經驗 獲得超4個贊
沒有理由避免它,它在情況下非常有用。但您需要了解潛在的問題。
最大的一個是死亡鉆石:
class GrandParent;
class Parent1 : public GrandParent;
class Parent2 : public GrandParent;
class Child : public Parent1, public Parent2;
您現在在Child中有兩個GrandParent“副本”。
C ++已經想到了這一點,并允許你做虛擬繼承來解決問題。
class GrandParent;
class Parent1 : public virtual GrandParent;
class Parent2 : public virtual GrandParent;
class Child : public Parent1, public Parent2;
始終檢查您的設計,確保您沒有使用繼承來節省數據重用。如果你可以用組合表示相同的東西(通常你可以),這是一個更好的方法。
- 3 回答
- 0 關注
- 626 瀏覽
添加回答
舉報