相关疑难解决方法(0)

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

我想知道一个空类的对象大小.它肯定不能是0字节,因为它应该可以像任何其他对象一样引用和指向它.但是,这样的对象有多大?

我用过这个小程序:

#include <iostream>
using namespace std;

class Empty {};

int main()
{
    Empty e;
    cerr << sizeof(e) << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在Visual C++和Cygwin-g ++编译器上得到的输出是1个字节!这对我来说有点令人惊讶,因为我期望它的机器字大小(32位或4字节).

任何人都可以解释为什么 1字节的大小?为什么不是 4个字节?这是依赖于编译器还是机器?此外,有人可以给出一个更有说服力的理由,说明为什么空类对象的大小不是 0字节?

c++ class object

105
推荐指数
5
解决办法
6万
查看次数

sizeof空结构在C中为0,在C++中为1为什么?

可能重复:
C++中的空类C
中空结构的大小是多少?

我在某处看到C++中空结构的大小为1.所以我想到验证它.不幸的是我把它保存为C文件并使用了<stdio.h>标题,我很惊讶地看到了输出.这是0.

这意味着

struct Empty {

};

int main(void)
{
  printf("%d",(int)sizeof(Empty));
}
Run Code Online (Sandbox Code Playgroud)

在编译为C文件时打印0,在编译为C++文件时打印1.我想知道原因.我读到c ++中的sizeof空结构不为零,因为如果大小为0,则该类的两个对象将具有相同的地址,这是不可能的.我哪里错了?

c c++ struct sizeof

33
推荐指数
3
解决办法
2万
查看次数

标签 统计

c++ ×2

c ×1

class ×1

object ×1

sizeof ×1

struct ×1