私は次のコードでStroustrupの this link を読みます:
_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}{}
括弧と中括弧の間に違いはありますか?
違いがない場合、他の関数呼び出しでも中括弧を使用できますか?それともコンストラクタの委任だけですか?そして最後に、なぜ両方の構文が必要なのでしょうか。少し曖昧です。
初期化値は、括弧または中括弧で指定できます。
中括弧の初期化はC++ 11で導入され、すべての非静的変数に使用できる「均一な初期化」であることを意味しています。
中括弧は、括弧または等号の代わりに使用でき、均一性を高め、混乱を減らすために導入されました。
これは構文上の構造にすぎず、パフォーマンス上の利点やペナルティは発生しません。