我想知道空类对象的大小。它肯定可以 not 为 0 字节,因为它应该可以像任何其他对象一样引用和指向它。但是,这样的物体有多大?
我用过这个小程序:
#include <iostream>
using namespace std;
class Empty {};
int main()
{
Empty e;
cerr << sizeof(e) << endl;
return 0;
}
我在 Visual C++ 和 Cygwin-g++ 编译器上得到的输出都是 1 字节!这让我有点惊讶,因为我期望它是机器字的大小(32 位或 4 字节)。
谁能解释为什么 1 字节的大小? 为什么不 4 字节?这是否也取决于编译器或机器?另外,谁能给出一个更令人信服的理由来解释为什么空类对象不会的大小为 0 字节?
最佳答案
引用 Bjarne Stroustrup's C++ Style and Technique FAQ ,大小不为零的原因是“确保两个不同对象的地址会不同”。并且大小可以是 1,因为在这里对齐并不重要,因为实际上没有什么可看的。
关于C++:空类的对象的大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/621616/