次の構文を使用して値を初期化できると聞いたことがあります。
int foo = {5};
また、さらに少ないコードを使用して同じことを実行できます。
int foo{5};
さて、それらを使用することの利点/欠点はありますか? それは良い習慣ですか、それとも standard: を使用する方が良いでしょうか?
int foo = 5;
あなたが挙げた 3 つの例は、まったく同じではありません。均一な初期化 ( を含むもの{ }
) では、縮小変換は許可されません
int i = 5.0; // Fine, stores 5
int i{5.0}; // Won't compile!
int i = {5.0}; // Won't compile!
さらに、コピーの初期化 ( が付いているもの=
) では、明示的なコンストラクターを使用できません。
新しい C++11 機能の均一な初期化と、それに類する初期化子リスト (ブレースの初期化構文を標準コンテナーなどに一般化する) は、多くの癖があるトリッキーな動物です。@Praetorian のコメントで言及されている最も厄介な解析はそのうちの 1 つにすぎず、タプルと多次元配列は別のパンドラの箱です。