I this link von Stroustrup mit dem folgenden Code zu lesen:Delegieren Bauer in C++() oder {}
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)} { }
// ...
};
Meine Frage nach der Linie ist:
X() X{42}{}
Gibt es irgendwelche Unterschiede zwischen Klammern und geschweifte Klammern?
Wenn es keine Unterschiede gibt, kann ich geschweifte Klammern auch in anderen Funktionsaufrufen verwenden? Oder ist es nur in der Konstruktordelegierung? Und schließlich Warum sollten wir beide Syntaxen haben? Es ist ein wenig ambig.
"kann ich geschweifte Klammern auch in anderen Funktionen verwenden oder ist es nur in der Delegierung von Konstruktoren?" - Die Konstruktordelegation ist kein Funktionsaufruf. Sie können niemals '{}' mit Funktionsaufrufen verwenden. – emlai
check this: http://stackoverflow.com/questions/18222926/why-is-list-initialization-using-curly-brazes-better-than-the-alternatives –