メンバー初期化リストの評価順序は何ですか? 質問する

メンバー初期化リストの評価順序は何ですか? 質問する

いくつかの引数を取るコンストラクタがあります。引数はリストされている順序で初期化されていると想定していましたが、あるケースでは逆順に初期化されていたようで、その結果として異常終了しました。引数を逆にすると、プログラムは異常終了しなくなりました。

以下は私が使用している構文の例です。この場合、 をa_先に初期化する必要があります。 この初期化の順序を確保できますか?b_

class A
{
  public:
    OtherClass a_;
    AnotherClass b_;

    A(OtherClass o, string x, int y)
      : a_(o)
      , b_(a_, x, y) {}
};

ベストアンサー1

これは、クラス内のデータ メンバー宣言の順序によって異なります。したがって、例ではa_、 が最初のものになり、次にb_2 番目のものになります。

おすすめ記事