gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:18:09 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com