26
同僚は、以下のタイプでは、すべてのメンバーが(互いに相対的に)メモリ内で不特定の順序を持っていると言いました。これらのメンバーは不特定の注文をしていますか?
すべてが同じアクセスレベルであるため、私はこれに疑いを持っています。
誰が正しいですか?
struct foo { public: int x; public: int y; public: int z; };
同僚は、以下のタイプでは、すべてのメンバーが(互いに相対的に)メモリ内で不特定の順序を持っていると言いました。これらのメンバーは不特定の注文をしていますか?
すべてが同じアクセスレベルであるため、私はこれに疑いを持っています。
誰が正しいですか?
struct foo { public: int x; public: int y; public: int z; };
あなたの同僚は、C++ 03のために正しいです:(非組合)クラスの
[C++03: 9.2/12]:
非静的データメンバが介在アクセス指定子なしを宣言したように割り当てられ、以降のメンバークラスオブジェクト内でより高いアドレスを持つ。アクセス指定子で区切られた非静的データメンバーの割り当ての順番は不明です(11.1)。 [..]
しかし、あなたがのために正しいC++ 11:
同じアクセス制御(第11条との(非組合)の[C++11: 9.2/14]:
非静的データメンバクラス)は、後のメンバーがクラスオブジェクト内でより高いアドレスを持つように割り当てられます。アクセス制御の異なる非静的データメンバーの割り当て順序は不特定である(11)。 [..]
(違いを見つける。)