C ++中带空数组的类的大小

时间:2013-09-21 19:40:54

标签: c++ class sizeof

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

#include <iostream>

class A {
public:
    int a[0];
};

int main() {
   A obj;
   std::cout << sizeof(obj) << std::endl;
}

输出0。为什么呢?

1 个答案:

答案 0 :(得分:13)

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)作为compiler extension