在涉及虚拟功能的虚拟继承的情况下,有人可以解释一下类的大小。
class A{
char k[ 3 ];
public:
virtual void a(){};
};
class B : public A{
char j[ 3 ];
public:
virtual void b(){};
};
class C : public virtual A{
char i[ 3 ];
public:
virtual void c(){};
};
class D : public B, public C{
char h[ 3 ];
public:
virtual void d(){};
};
类大小的输出是:
sizeof(A): 8
sizeof(B): 12
sizeof(C): 16
sizeof(D): 32
我正在使用的编译器是
gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)