C 中的虛 虛基類和虛繼承

2021-09-25 18:34:49 字數 1587 閱讀 1931

一、問題由來

以沙發床為例:沙發床繼承了 沙發 和 床。

};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 是指從多個直接基類中產生派生類的能力,多繼承的派生類繼承了所有父類的成員。儘管概念上非常簡單,但是多個基類的相互交織可能會帶來錯綜複雜的設計問題,命名衝突就是不可迴避的乙個。多繼承時很容易產生命名衝突,即使我們很小心地將所有類中的成員變數和成員函式都...