以下代码打印 20,即 sizeof(z) 为 20。
#include <iostream.h>
class Base
{
public:
int a;
};
class X:virtual public Base
{
public:
int x;
};
class Y:virtual public Base
{
public:
int y;
};
class Z:public X,public Y
{
};
int main()
{
Z z;
cout << sizeof(z) <<endl;
}
而如果我在这里不使用虚拟基类,即以下代码:sizeof(z) 为 16。
#include <iostream.h>
class Base
{
public:
int a;
};
class X:public Base
{
public:
int x;
};
class Y:public Base
{
public:
int y;
};
class Z:public X,public Y
{
};
int main()
{
Z z;
cout << sizeof(z) <<endl;
}
为什么在第一种情况下 sizeof(z) more(20) ?不应该是 12,因为 Base 在 Z 中只包含一次?