C++空类的大小疑点

C++空类的大小问题
class S
{
};
class X
{
};
class Y:virtual public X
{
};
class A:public Y,public S //为何调换两个类 的位置会有不同结果?

{
//char a[2]; 
};
void main()
{
cout<<sizeof(S)<<endl;
cout<<sizeof(X)<<endl;
cout<<sizeof(Y)<<endl;
cout<<sizeof(A)<<endl;

}
结果如下:
1
1
4
8



class S
{
};
class X
{
};
class Y:virtual public X
{
};
class A:public S,public Y  

{
//char a[2]; 
};
void main()
{
cout<<sizeof(S)<<endl;
cout<<sizeof(X)<<endl;
cout<<sizeof(Y)<<endl;
cout<<sizeof(A)<<endl;

}
结果如下:
1
1
4
4

为何调换两个类的位置会有不同结果?



------解决方案--------------------

没事研究这些蛋疼的问题干啥???
空类编译器分配一个字节用于标记。
单继承后增加一个虚基表指针
多继承增加多个虚基表指针


------解决方案--------------------
I don't think it's helpful to your programming skills. I hope you will put more time in advanced technolgies!
------解决方案--------------------
这可能是vc的bug
------解决方案--------------------
对这个感兴趣可以看对象模型那本,可以对类的实现有很清晰的看法
------解决方案--------------------
探讨
class S
{
};
class X
{
};
class Y:virtual public X
{
};
class A:public Y,public S //为何调换两个类 的位置会有不同结果?

{
//char a[2];
};
void main()
{
cout<<sizeof(S)<<endl;
cout<<sizeof(X)<<endl;
……