C++:空类的对象的大小是多少?

标签 c++ class object

我想知道空类对象的大小。它肯定可以 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/

相关文章:

c++ - 如何输入十六进制值而不是字符作为 boost::asio::buffer 的输入

c++ - 让 GNU 使用不同的编译器

c++ - 运算符不应该是常量,但可以是

c# - 2个C#类相互包含为成员

python - Python中使用哈希获取两个对象列表之间的差异

c# - 动态、对象、变量

c++ - 这个语法是什么意思

c++ - 在 C++ 线程中,我应该通过值还是引用传递 shared_ptr?

c - C 代码有问题

javascript - getDay() 方法 javascript 的问题