c 類的大小

2022-03-30 10:26:43 字數 552 閱讀 2297

做題的時候發現乙個題目求類的sizeof()大小,複製了網友的解答:

#pragma pack(2)

class bu

ubuf; // union的大小取決於它所有的成員中,占用空間最大的乙個成員的大小,並且需要記憶體對齊,這裡因為#pragma pack(2),所以union的大小為14,如果不寫#pragma pack(2),那麼union大小為16【因為與sizeof(int)=4對齊】

void foo(){} //0

typedef char*(*f)(void*); //0

enumdisk; // 4

}bu;

因此sizeof(union) = 4+14 +0 +0 +4 = 22

類的大小計算的時候,只包括:

類的非靜態成員資料的型別大小之和.

如果有虛函式的話,還要加上指向虛函式的指標(vptr)大小

邊緣調整後的大小

與類中的建構函式,析構函式以及其他的成員函式無關.

據說,類的成員是類的所有物件共享的,放在程式的**區,這部分區域sizeof()是不計算的。

c 類的大小

初學者在學習物件導向的程式語言時,或多或少的都些疑問,我們寫的 與最終生編譯成的 卻 大相徑庭,我們並不知道編譯器在後台做了什麼工作 這些都是由於我們僅停留在語言層的原因,所謂語言層就是教會我們一些基本的語法法則,但不會告訴我們為什麼這麼做?今天和大家談的一點感悟就是我在學習程式設計過程中的一點經驗...

C 類的大小

乙個空類class a 的大小為什麼是1,因為如果不是1,當定義這個類的物件陣列時候a objects 5 objects 0 和objects 1 就在同乙個位址處,就無法區分。單繼承 includeusing namespace std class aprivate char k 3 class...

C 類的大小

前言 c 類所占用的記憶體空間實際上是指類的例項所占用的記憶體空間。其大小是由類中的成員變數決定的 靜態成員變數除外 由於成員函式放到 區由類的各個例項共享,故成員函式對類占用記憶體大小沒有影響。具體地說,類占用記憶體大小由以下三個方面決定 1.非靜態成員變數的記憶體占用之和 2.考慮記憶體對其的問...