虛繼承和虛基類

2021-08-02 04:00:11 字數 995 閱讀 6900

虛繼承主要解決在多重繼承中的菱形繼承問題,也就是說 b和c類同時繼承了a類,然後d類繼承了b,c類,那麼d類的虛表就會有重複的函式指標。

#include

using

namespace std;

//虛基類

class

person

~person()

person

(string name)

// :name(name) error

void

talk()

protected

: string name;};

class

mother

:virtual

public person//虛繼承

~mother()

mother

(string name)

// :person(name)

void

talk()

void

cook()

};class

father

:virtual

public person//虛繼承

~father()

father

(string name)

// :person(name)

void

talk()

void

repair()

};class

child

:public father,

public mother

~child()

child

(string name)

//:name(name)

//:father(name), mother(name)

//person(name);

void

talk()

};main()

虛基類和虛繼承

這算得上我個人的乙個總結上,其實也算不上什麼原創,只是為了過濾一下前輩的經驗,加深一下自己的記憶 虛繼承的目的是讓某個類做出宣告,承諾願意共享它的基類,被共享的那個基類就是虛基類 includeusing namespace std class a protected int a class b p...

C 虛繼承和虛基類詳解

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

C 虛繼承和虛基類詳解

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