、私のようなクラスがある場合:互いに隣接して宣言された2つのパブリックフィールドは、メモリ内で「互いに隣り合っている」必要がありますか? C++で
class Foo {
public:
int a;
char b;
private:
char c;
};
はそれがa
がFoo
のインスタンスが割り当てられているときに、メモリ内b
の隣なければならないことを意味していますか?
私は標準here (n4296)のビットを読んでいる、と私が見つけた唯一の言語が同じアクセス 制御(第11条)と(非組合)クラスの
非静的データメンバーでした後のメンバーがクラスオブジェクト内のより高いアドレスを持つように割り当てられます。
"a、b、c"、または "c、a、b"の代わりに "a、c、b"のような潜在的な順序を除外しないように、 。
興味深いことに、標準では21回しか出てこないという用語を検索しましたが、別の用語を使って「2つのフィールドが他のフィールドがないように配置されているそれらの間の。"