C++中一个空对象为什么还要占用一个字节空间?
先看一个实例输出结果:
#include <iostream>
using namespace std;
//一个空类
class Empty{
};
int main()
{
Empty e;
cout << "sizeof(e) = " << sizeof(e) << endl;
return 0;
}
输出结果为:sizeof(e) = 1
从输出结果可以看出一个空的对象占有的内存空间大小为1个字节。
但是经过测试一个空的string对象占有的内存空间大小为8个字节。
分析原因:
1.标准对此的确有规定,但没有明确规定空对象一定要是1字节,标准只是规定了对象的大小必须大于0,首先标准中有如下标定“An object is a regio