メンバー初期化子リストの評価順序
クラス メンバーを初期化するコンストラクターを使用する場合、これらの初期化が発生する順序を理解することが重要です。予期された初期化順序に従わず、予期しない動作が発生したシナリオを見てみましょう。
提供されたコードでは、クラス A がメンバー変数 a_ と b_ で定義されています。コンストラクターは引数を受け取り、両方のメンバーを初期化します。プログラマは、メンバーがリストされた順序 (最初に a_、次に b_) で初期化されると想定しました。ただし、特定のインスタンスでは、b_ が a_ より前に初期化され、初期化前に a_ が参照されたときに中止が発生することが観察されました。
初期化の正しい順序を確認するには、順序が次のとおりであることを理解しておくことが重要です。クラス定義内のデータ メンバー宣言によって決定されます。上の例では、クラス内で最初に a_ が宣言され、次に b_ が続きます。したがって、メンバー初期化子リスト内の順序に関係なく、a_ は常に b_ より前に初期化され、プログラマが遭遇した問題は解決されます。
以上がC コンストラクターのメンバーの初期化順序がイニシャライザー リストの順序と異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。