Ich habe erst gestern erfahren, dass die Angabe von Parametern für Initialisierungslistenelemente optional ist. Wie lauten die Regeln für das, was in diesem Fall passiert?Standardwerte in C++ - Initialisierungslisten
Im folgenden Beispiel wird ptr auf 0 initialisiert, auf "false" umgestellt und "Bar default-constructed"? Ich denke, diese Frage ist irgendwie redundant, weil es in Initialisierungslisten wenig Sinn hätte, wenn nicht spezifizierte Argumentwerte == undefiniertes Verhalten.
Kann ich auch auf den Abschnitt des C++ - Standards hingewiesen werden, der das Verhalten im Fall von Initialisierungslistenelementen angibt, die keine Argumente erhalten?
class Bar
{
Bar() { }
};
class SomeClass;
class AnotherClass
{
public:
SomeClass *ptr;
bool toggle;
Bar bar;
AnotherClass() : ptr(), toggle(), bar() { }
// as opposed to...
// AnotherClass() : ptr(NULL), toggle(false), bar(Bar()) { }
};
Mögliche Duplikate von [Konstruktorinitialisierungsliste mit leerer Initialisierung] (https://stackoverflow.com/questions/11164394/constructor-initialization-list-with-empty-initialization) – Justin