首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-08-17 
为什么类体为空的时候sizeof一下结果是1字节?class A{}sizeof(A)1class A{public:int a}sizeof(A)4

为什么类体为空的时候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加以区分。

热点排行