コンストラクターの初期化構文: 初期化子リストとコンストラクター本体
C では、クラス メンバー変数を初期化するための 2 つのオプションがあります。コンストラクター:
初期化子リスト:
public: Thing(int _foo, int _bar): member1(_foo), member2(_bar) {}
コンストラクター本文:
public: Thing(int _foo, int _bar) { member1 = _foo; member2 = _bar; }
比較
両方の構文は似ているように見えますが、非 POD (プレーン) では大きな違いがある可能性があります。 Old Data) メンバー タイプ。
初期化子リスト構文では、member変数はコンストラクター本体が実行される前に初期化されます。これは、デフォルト以外のコンストラクターを持つ非 POD メンバーが適切に初期化されることが保証されることを意味します。
コンストラクター本体の構文では、メンバー変数はコンストラクター本体の後に初期化されます。これにより、非 POD メンバーにデフォルトのコンストラクターがない場合、二重初期化エラーやコンパイル エラーが発生する可能性があります。
デフォルト パラメーターの処理
デフォルト パラメーターは、POD メンバー間で異なる方法で処理されません。 2 つの構文。初期化子リストとコンストラクター本体の両方でデフォルトのパラメーターを使用できます。
結論
非 POD メンバー型の場合は、初期化子リスト構文を使用することをお勧めします。なぜなら、適切な初期化が保証され、潜在的なエラーが防止されるからです。
以上がイニシャライザ リストとコンストラクタ本体: どちらの C コンストラクタ構文を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。