亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我應該避免C ++中的多重繼承?

為什么我應該避免C ++中的多重繼承?

C++
LEATH 2019-08-29 16:55:29
為什么我應該避免C ++中的多重繼承?使用多重繼承是一個好主意還是我可以做其他事情?
查看完整描述

3 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

從對Bjarne Stroustrup采訪中

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


查看完整回答
反對 回復 2019-08-29
?
慕無忌1623718

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;

始終檢查您的設計,確保您沒有使用繼承來節省數據重用。如果你可以用組合表示相同的東西(通常你可以),這是一個更好的方法。


查看完整回答
反對 回復 2019-08-29
  • 3 回答
  • 0 關注
  • 626 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號