在玩继承时,我碰巧尝试了这个:
class A
{ int i; };
class B : virtual public A
{ int j; };
class C : public B
{ int k; };
int main()
{
std::cout<<sizeof(C)/sizeof(int);
return 0;
}
这给了我输出6
虽然以下按预期工作,但给出了输出3
class A
{ int i; };
class B : public A // No virtual here
{ int j; };
class C : public B
{ int k; };
int main()
{
std::cout<<sizeof(C)/sizeof(int);
return 0;
}
为什么会有这种差异?而且,为什么它是第二种情况的两倍?