Die Klammern in new Foo()
angeben Wertinitialisierung; Dies bedeutet im Grunde, dass jedes Mitglied null initialisiert ist. Wenn Sie stattdessen gesagt haben new Foo
, und dann würden die Mitglieder nicht uneinheitlich bleiben, da sie für Ihre automatische Variable sind.
Um die automatische Variable zu schätzen, können Sie leider nicht schreiben Foo bar()
, Da das eine Funktion erklärt. Du brauchst
Foo bar{}; // C++11
Foo bar = Foo(); // Historical C++