//状态一情况下 类D大小是32, 代码如下:
class B{
public:
char b;
virtual void b(){}
};
class C{
public:
char c1;
char c2;
virtual void c1(){}
virtual void c2(){}
};
class D : public B, public C{
public:
int d;
virtual void b(){}
virtual void c1(){}
};
//sizeof(D) == 32;
//状态二情况下 类D大小是24, 代码如下:
class B{
public:
virtual void b(){}
};
class C{
public:
virtual void c1(){}
virtual void c2(){}
};
class D : public B, public C
{
public:
char b;
char c1;
char c2;
int d;
virtual void b(){}
virtual void c1(){}
};
//sizeof(D) == 24;
我的疑问 :
情景2的大小24是我预期的.但我预期情景1也应该是24,结果被打脸,程序输出是32.想不明白为什么是32.
变量在基类定义和变量都在派生类定义两种情况下,为什么会影响派生类的最终大小?