Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这些成员是否有未指定的顺序?_C++_C++11_C++03 - Fatal编程技术网

C++ 这些成员是否有未指定的顺序?

C++ 这些成员是否有未指定的顺序?,c++,c++11,c++03,C++,C++11,C++03,一位同事告诉我,在以下类型中,所有成员在内存中都有未指定的顺序(相对于彼此) 我对此表示怀疑,因为它们都具有相同的访问级别 谁是对的 struct foo { public: int x; public: int y; public: int z; }; 您的同事对C++03的理解是正确的: [C++03:9.2/12]:已声明的(非联合)类的非静态数据成员没有中间的访问说明符,这些成员将被分配,以便以后的成员在类对象中具有更高的地址。未指定由访问说明符分隔的非静态数据成员的分配顺序(11.1

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

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

谁是对的

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

您的同事对C++03的理解是正确的:

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

但是对于C++11,您是正确的:

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

(找出区别。)