繼承的內存分佈和代價

class B
{
private:
	int val;
	char c1;
	char c2;
	char c3;
};

class A1
{
private:
	int val;
	char c1;
};

class A2: public A1
{
private:
	char c2;
};

class A3: public A2
{
private:
	char c3;
};
如果將B,寫成A3的繼承形式,並且擁有相同的成員變量
sizeof(B) = 8; // alignment
sizeof(A3) = 16;
sizeof(A2) = 12;
sizeof(A1) = 8;

爲什麼繼承的類,它自己的成員變量沒有填補父類由於alignment而增加的內存?
不佔用已經填補的內存是爲了保證使用時正確的賦值


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章