C での非静的データ メンバーの初期化順序
非静的データ メンバーを含むクラスの新しいインスタンスを作成する場合、初期化される順序は、オブジェクトを適切に構築するために非常に重要です。
このシナリオでは、次のことを考慮してみましょう。 code:
class A {}; class B {}; class X { A a; B b; };
クラス X のコンストラクターが呼び出されるとき、どちらのコンストラクター (A または B) が最初に呼び出されるのかという疑問が生じます。クラス定義内のそれらの位置によって順序が決まりますか?
C 標準のセクション 12.6.2 によると、初期化の順序は次のとおりです:
したがって、提供されたコードでは、非静的データ メンバー a と b が の順序で初期化されます。 が宣言されており、最初に a が続き、次に b が続きます。 A のコンストラクターは、B のコンストラクターの前に呼び出されます。
要約すると、非静的データ メンバーの初期化順序は、コンストラクター内での配置ではなく、クラス定義内での宣言順序によって決まります。体。
以上がC クラスの非静的データ メンバーの初期化順序は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。