一位同事告诉我,在以下类型中,所有成员在内存中都有未指定的顺序(相对于彼此).
我对此表示怀疑,因为它们都具有相同的访问级别.
谁是对的?
struct foo { public: int x; public: int y; public: int z; };
Run Code Online (Sandbox Code Playgroud)
Lig*_*ica 36
你的同事对C++ 03是正确的:
[C++03: 9.2/12]:
声明的(非联合)类的非静态数据成员而没有中间访问说明符被分配,使得后来构件具有类对象内的较高地址.由访问说明符分隔的非静态数据成员的分配顺序未指定(11.1).[..]
但你对C++ 11是正确的:
[C++11: 9.2/14]:
(非联合)类的非静态数据成员与同一接入控制(第11)被分配,使得后来构件具有类对象内的较高地址.未指定具有不同访问控制的非静态数据成员的分配顺序(11).[..]
(指出不同.)
归档时间: |
|
查看次数: |
659 次 |
最近记录: |