Следующий код печатает 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) больше (20) в первом случае? Не должно быть 12, поскольку база будет включена только один раз в Z?