コンストラクターの Const フィールドの初期化
C クラス Bar が Foo ポインターを必要とし、それをライフサイクル全体を通じて不変に保つシナリオを考えてみましょう。 。これはどのように実装すればよいでしょうか?
最初は、以下に示すように、コンストラクター内で const フィールドを初期化するのが簡単に思えるかもしれません:
<code class="cpp">class Foo; class Bar { public: Foo * const foo; Bar(Foo* foo) { this->foo = foo; } }; class Foo { public: int a; };</code>
しかし、このアプローチはコンパイルに失敗します。解決策は、初期化子リストを使用することです。
<code class="cpp">Bar(Foo* _foo) : foo(_foo) { }</code>
名前の競合を防ぐために、受信変数の名前が変更されていることに注意してください。この初期化子リストは、コンストラクターの先頭で const フィールドを初期化し、その不変性を保証します。
以上がC コンストラクターで `const` フィールドを初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。