違いを理解する
C での変数の初期化オファー3 つの異なるメソッド: C ライク、コンストラクター、均一初期化。これらは共通の目標を共有していますが、構文とアプリケーションには微妙な違いがあります。
C 風の初期化
古典的な C 風の初期化構文は、引き続き実行可能なオプションです。
int x = 0;
コンストラクター初期化
コンストラクターの初期化は、クラスのコンストラクターを利用して値を設定します。
int x (0);
均一な初期化
均一な初期化。で導入されました。 C 11、一貫性のある構文:
int x {0};
プリミティブ データ型の構文
プリミティブ データ型の場合、3 つのメソッドはすべて同じ結果を生成します。 C のような初期化は個人の好みに合わせることができますが、均一な初期化によりコードベース全体の一貫性が確保されます。
クラス初期化のニュアンス
クラス型、中かっこ初期化、コンストラクター初期化の場合違う行動をする。例:
vector<int> v (100); // Creates a 100-element vector vector<int> v {100}; // Creates a 1-element vector with value 100
この区別は、std::vector のコンストラクターが std::initializer_list を唯一の引数として明示的に受け入れるために発生します。
統一初期化の利点
均一初期化によって導入されたイニシャライザ リストは、いくつかの機能を提供します利点:
使用オブジェクトの波括弧の初期化
オブジェクトの初期化の場合、波括弧特別な理由がない限り、初期化することをお勧めします。これにより、一時オブジェクトの作成が簡素化され、関数宣言のあいまいさによるエラーの可能性が減ります。
以上がC 、コンストラクター、およびユニフォーム初期化: 主な違いは何ですか? それぞれをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。