3

以下を考えると:

class D { ... };

struct C
{
    D d;
    int a;
    C() : a(5) {}
};

コンパイラは初期化するコードを生成しますが、初期化されるのC::dd前後aですか? それとも実装定義ですか?または未定義?

私の初期化子がデータメンバーの順序と一致しないと言うコンパイラを少なくとも1つ見たので、私は尋ねています。

4

1 に答える 1

6

初期化の順序は、宣言の順序です。つまり、例では「d」が「a」の前に初期化されます。初期化リストで他の順序を指定した場合でも。その場合、ほとんどのコンパイラは警告を表示します。

于 2013-09-06T11:45:26.163 に答える