虛函式的三種繼承(普通繼承,虛函式繼承,虛繼承)

2021-10-06 05:27:08 字數 396 閱讀 6782

#include

using namespace std;

class a;};

class b:public a;};

class c:public virtual b;};

int main(){cout

b類,普通繼承,乙個整型4b,繼承下來的乙個整型4b,虛指標4b,共12b【b類的虛函式表有aa與bb兩個虛函式位址】

c類,虛函式繼承,乙個整理4b,自己的虛指標4b(指向的虛函式表僅cc乙個函式),然後把b類的12b全繼承乙份,共20b

注意:上面兩個繼承與虛繼承是不一樣的,虛繼承就記住是菱形繼承時用到即可

虛函式 虛繼承

include using namespace std class a class b public a class c public b int main 結果是 4,4,4 為什麼?一,在private,protect,public的實際繼承中,派生類和基類擁有相同的虛函式表。但如果是虛繼承,會...

虛函式,虛繼承

1 空類,空類單繼承,空類多繼承的sizeof include using namespace std class base1 class base2 class derived1 public base1 class derived2 public base1,public base2 int m...

虛繼承 虛函式

1.虛繼承簡單的說就是如果有兩個類都繼承了同乙個基類 a 那麼,如果有第三個類又繼承了這兩個類,第三個類就會出現有 兩個基類 a 的情況,虛繼承就能避免這種情況。從實現 來看 普通繼承 普通繼承 沒有使用虛基類 基類a class a class b public a class c public ...