なぜconstメンバーはコンストラクタ本体ではなくコンストラクタ初期化子で初期化する必要があるのでしょうか? 質問する

なぜconstメンバーはコンストラクタ本体ではなくコンストラクタ初期化子で初期化する必要があるのでしょうか? 質問する

として宣言されたクラス メンバーは、constコンストラクター本体ではなく、コンストラクター初期化リストで初期化する必要があるのはなぜですか?

この2つの違いは何でしょうか?

ベストアンサー1

C++ では、実行がコンストラクターの本体に入ると、オブジェクトは完全に初期化されたと見なされます。

あなたが言った:

「const をコンストラクタの本体ではなく、コンストラクタ初期化リストで初期化する必要がある理由を知りたいです。」

あなたが見逃しているのは初期化初期化リストで発生し、割り当てコンストラクタの本体で発生します。ロジックの手順は次のとおりです。

1) const オブジェクトは初期化のみ可能です。

2) オブジェクトのすべてのメンバーは初期化リストで初期化されます。明示的に初期化しなくても、コンパイラが喜んで初期化します :-)

3) したがって、1) と 2) を組み合わせると、const のメンバーには初期化時にのみ値が割り当てられ、これは初期化リスト中に発生します。

おすすめ記事