如何编译空类和空结构?

unj*_*nj2 7 c++ compiler-construction gcc clang visual-c++

C++标准是否规定了类和结构的编译布局?如果他们是空的,他们如何编译不同?

K-b*_*llo 13

它确实在某种程度上说它必须为它分配空间,除非某些情况下它被用作基类(称为空基类优化).这是为了保证不同的对象具有不同的地址.

除了默认访问说明符之外,它们的编译方式相同,struct并且class是相同的.在C++ 11中,引入了标准布局类/结构的概念,并保证空类的内存布局相同.

  • @Paranaix:据我所知,未指定.满足对齐要求可能超过1个字节. (2认同)