イニシャライザ リストとコンストラクタ本体: どちらの C コンストラクタ構文を使用する必要がありますか?
Dec 03, 2024 pm 02:23 PMコンストラクターの初期化構文: 初期化子リストとコンストラクター本体
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 サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか?

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?
