若char是一位元組,int是4位元組,指標型別是4位元組,**如下:
class
ctest
virtual
void
mem_fun(){}
private
:
char
m_chdata;
int
m_ndata;
static
char
s_chdata;
};
char
ctest::s_chdata=』\0』;
問:
(1)若按4位元組對齊sizeof(ctest)的值是多少?
(2)若按1位元組對齊sizeof(ctest)的值是多少?
答案:12 9
答案解析:
注意點:
1 先找有沒有virtual 有的話就要建立虛函式表,+4
2 static的成員變數屬於類域,不算入物件中 +0
3 神馬成員都沒有的類,或者只有成員函式 +1(因為類函式不占用空間)
在類中,如果什麼都沒有,則類占用1個位元組,一旦類中有其他的占用空間成員,則這1個位元組就不在計算之內,如乙個類只有乙個int則占用4位元組而不是5位元組。
虛函式因為存在乙個虛函式表,需要4個位元組,資料成員物件如果為指標則為4位元組,注意有位元組對齊,如果為13位元組,則進製到16位元組空間。
C 類中的位元組對齊
結果輸出如下 出人意料的,這兩行語句 cout sizeof p endl cout sizeof p.x sizeof p.y sizeof p.z endl 的輸出內容為 129 4 4 1 12 這是什麼原因?解釋這種原因的答案是 位元組對齊 乙個c 的類的物件或結構體中含有若干成員,其佔占用...
C 類中的位元組對齊
include include using namespace std class point int main include include using namespace std class point int main 結果輸出如下 出人意料的,這兩行語句 cout sizeof p end...
c語言位元組對齊的計算方式
結構體的位元組對齊,在筆試中經常考到,我們先給出結論,然後以兩道例題位元組對齊的計算方式。1 struct class的自身對齊值。對於結構體和類的自身對齊值是所有成員中最大的自身對齊值。結構體和類的對齊原則 先將資料成員對齊,再將結構體和類自身對齊,最終大小與資料成員順序相關。2 union的自身...