虚函数与虚继承的思考计算机等级考试
文章作者 100test 发表时间 2010:01:01 13:00:43
来源 100Test.Com百考试题网
有这么一个关于虚函数和虚继承的问题,如下:
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。