#include
using
namespace std;
class base
private:
int a;
char *p;
};class derived:public base
;int main()
輸出:base=12 derived=16
然後我們去掉base類中的virtual關鍵字。
輸出:base=8 deruved=12
所以,sizeof類物件的大小包括:
1.非靜態資料成員的大小(不包括靜態資料成員,靜態資料成員是全域性的所有物件共享這個成員,而sizeof是:編譯時,編譯器計算出的棧空間大小)
2.如果類中有虛函式(無論有多少虛函式),則包括乙個虛指標的大小(4)
3.類可能的邊界對齊(32位機器是4的整數倍)
但是當存在繼承關係,而子類中存在member data的時候,因為需要保持base class subobject 在derivaed class 中的原樣性,所以繼承類的物件大小會相應增大。
#include
using
namespace std;
class concrete;
class concrete1;
class concrete2 : public concrete1;
class concrete3 : public concrete2;
int _tmain(int argc, _tchar* argv)
輸出: concrete obj = 8
concrete3 obj = 16
C sizeof各種型別的大小
c 各種型別的sizeof大小,先放測試 和測試結果 vs2013 include using namespace std 測試基礎型別 int getarraysize char str void testsizeofbase 測試空類 class emptya class emptyb publ...
C sizeof用法總結
sizeof是乙個操作符 operator 其作用是返回乙個物件 包括變數和表示式,將轉換為對相應型別 或型別所佔的記憶體位元組數。注意sizeof是右結合操作符,在編譯時計算。sizeof有三種語法形式 sizeof type name sizeof 型別 sizeof object sizeof...
C sizeof的使用總結
說明 以下 在 vs2008 中通過,在 32位作業系統下。1.定義 sizeof 是乙個操作符 operator 其作用是返回乙個物件或型別所佔的記憶體位元組數。其返回值型別為 size t size t 在標頭檔案 stddef.h 中定義,它依賴於編譯系統的值,一般定義為 typedef un...