1

次の構文を使用して値を初期化できると聞いたことがあります。

int foo = {5};

また、さらに少ないコードを使用して同じことを実行できます。

int foo{5};

さて、それらを使用することの利点/欠点はありますか? それは良い習慣ですか、それとも standard: を使用する方が良いでしょうか?

int foo = 5;
4

1 に答える 1

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 つにすぎず、タプルと多次元配列は別のパンドラの箱です。

于 2013-04-15T22:02:04.837 に答える