有这么一个关于虚函数和虚继承的问题,如下:
class A
{
char k[3];
public:
virtual void aa();
};
class B: public virtual A
{
char j[3];
public:
virtual void bb();
};
class C: public virtual B
{
char i[3];
public:
virtual void cc();
};
请问sizeof(A), sizeof(B), sizeof(C)分别为多少?
对于A, 我们很清楚的知道,其大小为8。
对于B,考虑到虚继承和自身的虚函数,我们也可以算出来起大小为8+8+4 = 20对于C,其大小为20+8+4 = 32。
其中 4为虚继承所占用的指针。
这个看上去没有什么问题。但是当我把虚继承去掉以后,这里却有了一些变化?
首先,我猜想了一下,A是8,B是16,C是24。