コンストラクターの Const フィールドの初期化
オブジェクトの存続期間を通じて不変でなければならない const フィールドを持つクラスを定義する場合、初期化することが重要ですそれは正しく。次のシナリオを考えてみましょう:
問題ステートメント:
入力として Foo ポインターを受け入れ、その内部でそれへの不変参照を維持する C クラス Bar を作成したいと考えています。一生。次のコードはコンパイルに失敗します:
<code class="cpp">class Foo; class Bar { public: Foo * const foo; Bar(Foo* foo) { this->foo = foo; } }; class Foo { public: int a; };</code>
解決策:
コンストラクターで const フィールドを正しく初期化するには、初期化子リストを使用する必要があります:
<code class="cpp">Bar(Foo* _foo) : foo(_foo) { }</code>
名前を避けるために、受信パラメータの名前を _foo に変更したことに注意してください。
このアプローチにより、Bar オブジェクトが構築されるとすぐに foo ポインターが初期化され、そのライフサイクルの間は不変のままになります。
以上がC でコンストラクターの「const」フィールドを直接初期化できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。