對虛擬繼承型別求sizeof

2021-07-04 15:01:54 字數 568 閱讀 3742

#include #include #include #include #include #include #include #include using namespace std;
class a

};class b:public virtual a

};class c:public virtual b

};class d:public  a

};class e:public  d

};int main()

在visual studio中的結果是

在codeblock中結果是,我的codeblocks是預設的編譯器。g++

可以看出不同編譯器對虛擬繼承的實現方式不同。而vs的是符合《深入探索c++物件模型》的說法的。

空型別求sizeof

答案 1 空型別的例項中不包含任何資訊,本來求sizeof應該是0,但是當我們宣告該型別的例項的時候,它必須在記憶體中占有一定的空間,否則無法使用這些例項。至於占用多少記憶體,由編譯器決定。visual studio中每個空型別的例項占用1位元組的空間。如果在該型別中新增乙個建構函式和析構函式,再對...

對乙個類求sizeof

include using namespace std class base int main int main int main private int a 佔4位元組 char p 4位元組指標 class derive public base derive private static int...

c 普通繼承 虛繼承 虛函式對sizeof的影響

摘要 本文從5段 例項出發,通過類中類的普通繼承,類的虛繼承,類的多重繼承,多個虛函式類的普通繼承 虛繼承與多重繼承,幾個交叉概念,詳細的闡釋了繼承 虛函式與虛繼承的基本概念,深入剖析了繼承於虛繼承的區別於聯絡。exp.001 虛繼承 include class a sizeof a 4 class...