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 foo { public: int x; public: int y; public: int z; };
您的同事对 C++03 是正确的:
[C++03: 9.2/12]:分配没有中间访问说明符的(非联合)类的非静态数据成员,以便后面的成员在类对象中具有更高的地址。由访问说明符分隔的非静态数据成员的分配顺序未指定 (11.1)。[..]
[C++03: 9.2/12]:
但是你对 C++11 是正确的:
[C++11: 9.2/14]:分配具有相同访问控制(第 11 条)的(非联合)类的非静态数据成员,以便后面的成员在类对象中具有更高的地址。未指定具有不同访问控制的非静态数据成员的分配顺序 (11)。[..]
[C++11: 9.2/14]:
(指出不同。)