读书人

为什么类体为空的时候sizeof一上结果是

发布时间: 2012-08-17 02:08:34 作者: rapoo

为什么类体为空的时候sizeof一下结果是1字节?
class A
{
};
sizeof(A)=1;


class A
{
public:
int a;
};
sizeof(A)=4;



谁能帮我解释一下这是为什么?

[解决办法]
在C++中,一个空类的大小到底是多少呢?当你定义如下的一个类X时,你设想它的大小是多少?

class X {};

X的大小是0吗?请看下面的代码

以上代码在VC6.0的运行结果如下:

size of X: 1


为什么一个空的类X会有占据1byte的内存空间呢?《Inside The C++ Object Model》给出了解释。
实际上一个空的类并不是空的,它有一个隐晦的1byte,那是被编译器安插进去的一个char。这使得这个class的两个objects得以在内存中配置独一无二的地址,对两个不同的object加以区分。

读书人网 >C++

热点推荐