#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...