ホームページ > バックエンド開発 > C++ > イニシャライザ リストとコンストラクタ本体: どちらの C コンストラクタ構文を使用する必要がありますか?

イニシャライザ リストとコンストラクタ本体: どちらの C コンストラクタ構文を使用する必要がありますか?

Linda Hamilton
リリース: 2024-12-03 14:23:17
オリジナル
826 人が閲覧しました

Initializer List vs. Constructor Body: Which C   Constructor Syntax Should You Use?

コンストラクターの初期化構文: 初期化子リストとコンストラクター本体

C では、クラス メンバー変数を初期化するための 2 つのオプションがあります。コンストラクター:

  • 初期化子リスト:

    public: Thing(int _foo, int _bar): member1(_foo), member2(_bar) {}
    ログイン後にコピー
  • コンストラクター本文:

    public: Thing(int _foo, int _bar) {
      member1 = _foo;
      member2 = _bar;
    }
    ログイン後にコピー

比較

両方の構文は似ているように見えますが、非 POD (プレーン) では大きな違いがある可能性があります。 Old Data) メンバー タイプ。

初期化子リスト構文では、member変数はコンストラクター本体が実行される前に初期化されます。これは、デフォルト以外のコンストラクターを持つ非 POD メンバーが適切に初期化されることが保証されることを意味します。

コンストラクター本体の構文では、メンバー変数はコンストラクター本体の後に初期化されます。これにより、非 POD メンバーにデフォルトのコンストラクターがない場合、二重初期化エラーやコンパイル エラーが発生する可能性があります。

デフォルト パラメーターの処理

デフォルト パラメーターは、POD メンバー間で異なる方法で処理されません。 2 つの構文。初期化子リストとコンストラクター本体の両方でデフォルトのパラメーターを使用できます。

結論

非 POD メンバー型の場合は、初期化子リスト構文を使用することをお勧めします。なぜなら、適切な初期化が保証され、潜在的なエラーが防止されるからです。

以上がイニシャライザ リストとコンストラクタ本体: どちらの C コンストラクタ構文を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート