为什么继承会迫使其他大小为零的结构膨胀?
为什么当空结构的大小为 1 时,零大小的数组会强制结构为零大小,为什么从非零大小的结构继承会导致结构膨胀到基类型的大小?
通过 GCC 5.3.0 编译,以防任何答案取决于 c++ 规范。
#include <iostream>
struct a {};
struct b { int x[0]; };
struct c : a{ int x[0]; };
struct d : b{ int x[0]; };
int main()
{
std::cout << sizeof(a) << std::endl; // 1
std::cout << sizeof(b) << std::endl; // 0
std::cout << sizeof(c) << std::endl; // 4
std::cout << sizeof(d) << std::endl; // 0
}