C コンストラクターで `const` フィールドを初期化するにはどうすればよいですか?

DDD
リリース: 2024-11-02 21:19:03
オリジナル
520 人が閲覧しました

How to Initialize `const` Fields in C   Constructors?

コンストラクターの 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!