【问题标题】:Do these members have unspecified ordering?这些成员是否有未指定的顺序?
【发布时间】:2013-03-23 16:29:32
【问题描述】:

一位同事告诉我,在以下类型中,所有成员在内存中都有未指定的顺序(相对于彼此)。

我对此表示怀疑,因为它们都具有相同的访问级别。

谁是正确的?

struct foo { public: int x; public: int y; public: int z; };

【问题讨论】:

    标签: c++ c++11 c++03


    【解决方案1】:

    你的同事对 C++03 是正确的:

    [C++03: 9.2/12]: 声明的(非联合)类的非静态数据成员没有中间访问说明符被分配,以便后面的成员在类对象中具有更高的地址。由访问说明符分隔的非静态数据成员的分配顺序未指定(11.1)。 [..]

    但你对 C++11 是正确的:

    [C++11: 9.2/14]:(非联合)类的非静态数据成员具有相同的访问控制(第 11 条),以便后面的成员在类对象中具有更高的地址。未指定具有不同访问控制的非静态数据成员的分配顺序 (11)。 [..]

    (找出差异。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多