Размер класса с пустым массивом в С++ AFAIK, sizeof не должен возвращать 0, но следующая программа: #include <iostream> class A { public: int a[0]; }; int main() { A obj; std::cout << sizeof(obj) << std::endl; } выводит 0. Почему? Ответ 1 С++ не разрешает массивы нулевого размера. Соответствующий компилятор отклоняет код, например: $ 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) в качестве расширения компилятора.
Ответ 1 С++ не разрешает массивы нулевого размера. Соответствующий компилятор отклоняет код, например: $ 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) в качестве расширения компилятора.