ソースコードで次の構造を見つけました。
variable_type variable_name{func(arg1, arg2, arg3)};
コードの次のバージョンでは、この構造は次の構造に置き換えられています。
variable_type variable_name = func(arg1, arg2, arg3);
それで、私の質問は、最初の行が何を意味し、2行目とどう違うのですか? また、2 行目の代わりに 1 行目を使用する方が良い、または悪い理由を知りたいですか?
最初の行は、一様初期化として知られる C++11 の新機能です。このスタイルの初期化は、 を受け取るコンストラクターを定義するクラスでも使用できますstd::initializer_list。この場合、そのようなコンストラクターが優先されます。
これは、C++11 ブレースの初期化の例です。
たとえば、次の記事を参照してください。