初期化子リストとコンストラクター本体: 違いを理解する
C では、コンストラクター内のメンバー変数の初期化は、初期化子リストのいずれかを使用して実行できます。またはコンストラクター本体内で。最初は同じ結果が得られるように見えますが、考慮すべき微妙な違いがいくつかあります。
初期化子リスト:
public : Thing(int _foo, int _bar): member1(_foo), member2(_bar){}
初期化子リストはカンマです。コンストラクターのパラメーター リストに続くメンバー初期化子の分離されたリスト。各イニシャライザは、対応するメンバー変数に値を割り当てます。この構文により、コンストラクター本体が実行される前にメンバー変数が確実に初期化されます。
コンストラクター本体:
public : Thing(int _foo, int _bar){ member1 = _foo; member2 = _bar; }
コンストラクター本体内で、メンバー変数は代入ステートメントを使用して初期化されます。 。この構文では、コンストラクター パラメーターの設定後に、より複雑な初期化ロジックが可能になります。
主な違い:
デフォルト パラメーター:
どちらのメソッドもデフォルト パラメーターを同じ方法で処理します。コンストラクターの宣言でデフォルトのパラメーターが指定されている場合、それらはコンストラクターに渡される不足している引数に使用されます。
結論:
どちらのアプローチでもメンバー変数を初期化できます。コンストラクター内では、適切な初期化順序を確保し、コンパイル エラーを回避するために、非 POD 型に対して初期化子リストが一般に好まれます。コンストラクター本体は、コンストラクター パラメーターの設定後に追加のコードを必要とする、より複雑な初期化ロジックに役立ちます。
以上が初期化子リストまたはコンストラクター本体: C ではどちらを使用する必要があるか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。