私は次のコードでStroustrup氏のthis linkを読む:私の質問はラインについてです(C++のコンストラクタを委任)または{}
class X {
int a;
public:
X(int x) { if (0<x && x<=max) a=x; else throw bad_X(x); }
X() :X{42} { }
X(string s) :X{lexical_cast<int>(s)} { }
// ...
};
:
X() X{42}{}
は間のいずれかの違いがありますかっこと中かっこ?
違いがない場合は、他の関数呼び出しで中括弧も使用できますか?それとも、コンストラクターの委任にありますか? 最後になぜ両方の構文を使用する必要がありますか?それはちょっとあいまいです。
「関数呼び出しで中括弧を使用することはできますか、それともコンストラクタの委譲にのみ使用できますか?」 - コンストラクタの委譲は関数呼び出しではありません。関数呼び出しで '{}'を使うことは決してできません。 – emlai
これを確認してください:http://stackoverflow.com/questions/18222926/why-is-list-initialization-using-curly-braces-better-than-the-alternatives –