读书人

C++空类的大小疑点

发布时间: 2012-04-13 13:50:24 作者: rapoo

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;
……

读书人网 >C++

热点推荐