C++中具有空数组的类的大小

size of class with empty array in C++

本文关键字:数组 C++      更新时间:2023-10-16

AFAIK,sizeof不应该返回0,而是返回以下程序:

#include <iostream>
class A {
public:
    int a[0];
};
int main() {
   A obj;
   std::cout << sizeof(obj) << std::endl;
}

输出0 .为什么?

C++不允许

零大小的数组。符合要求的编译器拒绝代码,例如:

$ g++-4.8 -pedantic-errors main.cpp
main.cpp:5:14: error: ISO C++ forbids zero-size array 'a' [-Wpedantic]
       int a[0];
              ^

因此,sizeof的行为在这里根本不相关。GCC允许它(不带-pedantic)作为编译器扩展。