虛基類和虛繼承

2021-08-09 02:00:58 字數 1085 閱讀 3761

這算得上我個人的乙個總結上,其實也算不上什麼原創,只是為了過濾一下前輩的經驗,加深一下自己的記憶

虛繼承的目的是讓某個類做出宣告,承諾願意共享它的基類,被共享的那個基類就是虛基類

#includeusing namespace std;

class a

protected:

int _a;

};class b:public a

protected:

int _b; };

class c:public a

protected:

int _c;

};class d:public b,public c

void set_a(int a)

void set_b(int b)

void set_c(int c)

void set_d(int d)

protected:

int _d; };

int main()

當繼承關係呈菱形繼承的時候,由於最後乙個派生類繼承了兩個擁有相同基類的派生類,相同派生類中繼承的成員變數和成員函式發生衝突,這個時候就要用到虛繼承,讓派生類能夠共享一樣的基類。

#includeusing namespace std;

class a

protected:

int _a;

};class b:virtual public a

protected:

int _b; };

class c:virtual public a

protected:

int _c;

};class d:public b,public c

void set_a(int a)

void set_b(int b)

void set_c(int c)

void set_d(int d)

protected:

int _d; };

int main()

像這樣在公有繼承前面加上virtual就可以實現虛繼承

虛繼承和虛基類

虛繼承主要解決在多重繼承中的菱形繼承問題,也就是說 b和c類同時繼承了a類,然後d類繼承了b,c類,那麼d類的虛表就會有重複的函式指標。include using namespace std 虛基類 class person person person string name name name e...

C 虛繼承和虛基類詳解

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

C 虛繼承和虛基類詳解

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