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