Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
编译器是否可以自由地重新排序非标准布局类中的数据?例如,是否允许更改
struct { char x; private: short y; public: char z; };
至
struct { private: short y; public: char x; char z; };
编辑:我最初记错了报价,编译器可以这样做9.2/14:
9.2/14
分配具有相同访问控制(第 11 条)的(非联合)类的非静态数据成员,以便后面的成员在类对象中具有更高的地址。未指定具有不同访问控制的非静态数据成员的分配顺序 (11)。实现对齐要求可能会导致两个相邻的成员不会被立即分配;管理虚拟功能(10.3)和虚拟基类(10.1)的空间要求也是如此
它不能做的是使用相同的访问说明符重新排序属性。
也就是说,我不知道有任何实现可以随意对属性进行重新排序,即使跨访问说明符也是如此。