c sizeof 物件大小

2021-04-20 05:18:46 字數 823 閱讀 2883

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