一、問題由來
以沙發床為例:沙發床繼承了 沙發 和 床。
};class sofabed :public sofa, public bed //父類中有相同的成員 造成了資料冗餘
二、解決措施
為了解決上述問題,c++提供了虛基類和虛繼承機制,實現了在多繼承中只保留乙份共同成員,解決了資料冗餘和訪問不方便的問題。
步驟:①提取各父類中,相同的成員,構成祖父類;
class furniture
protected:
float price_;
string color_;
};
②讓各父類,繼承祖父類
class sofa:public furniture
;class bed :public furniture
;
③虛繼承 加virtual
class sofa:virtual public furniture
;class bed :virtual public furniture
;
改進後:
三、總結
虛基類:經提取,存有公共元素的,被虛繼承的祖父類。 通常虛基類是需要設計和抽象的,一般不對其初始化。
虛繼承:是一種對繼承的擴充套件,是一種設計的結構。跟虛函式沒有關係。
虛繼承和虛基類
虛繼承主要解決在多重繼承中的菱形繼承問題,也就是說 b和c類同時繼承了a類,然後d類繼承了b,c類,那麼d類的虛表就會有重複的函式指標。include using namespace std 虛基類 class person person person string name name name e...
虛基類和虛繼承
這算得上我個人的乙個總結上,其實也算不上什麼原創,只是為了過濾一下前輩的經驗,加深一下自己的記憶 虛繼承的目的是讓某個類做出宣告,承諾願意共享它的基類,被共享的那個基類就是虛基類 includeusing namespace std class a protected int a class b p...
C 虛繼承和虛基類詳解
多繼承 multiple inheritance 是指從多個直接基類中產生派生類的能力,多繼承的派生類繼承了所有父類的成員。儘管概念上非常簡單,但是多個基類的相互交織可能會帶來錯綜複雜的設計問題,命名衝突就是不可迴避的乙個。多繼承時很容易產生命名衝突,即使我們很小心地將所有類中的成員變數和成員函式都...