c 類大小計算

2021-10-07 22:39:24 字數 613 閱讀 7211

先給出總結:

以下測試均在x64系統執行

1、原則1

空類的大小為1位元組。

#includeusing namespace std;

class a{};

int main()

;int main()

; virtual void fun2(){};

int test1();

static void test2();

static int c;

static int d;

static int f;

static int e;

};int main()

};class b

};class c

};class d : virtual public a, virtual public b, virtual public c

};int main()

{ /**

* @brief 8 8 24 派生類虛繼承多個虛函式,會繼承所有虛函式的vptr

*/cout《輸出:8 8 24   

d繼承了abc的vptr,8*3 = 24

C 類的大小計算

1.空類的大小 class c2 結果 sizeof c2 1 分析 這是因為當我們例項化乙個類物件時,就是為其分配記憶體空間,並且每乙個例項化的類都會有乙個獨一無二的記憶體位址,空類也不例外,必須為其分配乙個記憶體,因此編譯器給分配了乙個位元組的記憶體,使其獨一無二。2.只含有乙個虛函式的類的大小...

C 學習 c 類大小計算

涉及到c 中求類大小時需要特別注意一下幾點 為類的非靜態成員資料的型別大小之和。有編譯器額外加入的成員變數的大小,用來支援語言的某些特性 如 指向虛函式的指標 虛繼承 多重繼承 為了優化訪問效率,進行的邊緣調整。與類中的建構函式,析構函式以及其他的成員函式無關。5.私有繼承,會去繼承之前的私有成員變...

C 類所佔記憶體大小計算

c 類所佔記憶體大小計算 文章出處 作者 vision chen yeah.net 說明 筆者的作業系統是32位的。class a sizeof a sizeof a 1 明明是空類,為什麼編譯器說它是1呢?空類同樣可以例項化,每個例項在記憶體中都有乙個獨一無二的位址,為了達到這個目的,編譯器往往會...