Ich aktualisiere eine Klasse nach C++ 14 und versuche, die einfachste Möglichkeit zu finden, alle Instanzvariablen bei der Konstruktion auf Null zu initialisieren. Hier ist, was ich bisher:Initialisiert der default-Standardkonstruktor Variablen auf Null?
class MyClass {
public:
int var;
float* ptr;
double array[3];
MyStruct data;
unique_ptr<MyStruct> smart_ptr;
MyClass() = default;
~MyClass() = default;
}
setzt den Konstruktor default
das Äquivalent zu tun:
MyClass() : var{}, ptr{}, array{}, data{}, smart_ptr{} {}
... oder muss ich jede Variable init? (. Ich habe versucht, sowohl in Visual Studio und ich Nullen oder so, aber ich bin nicht sicher, ob das Glück ist oder nicht)
Ich Instancing die Klasse ohne Klammern: MyClass obj;
Mann, ich wollte dir eine selbstgefällige Antwort geben, aber jetzt bin ich mir nicht sicher. Siehe auch http://stackoverflow.com/questions/2417065/does-thedefault-constructor-initialize-built-in-types – Mikhail
Hahah :) Ich weiß, richtig! Ich habe diesen Post tatsächlich gesehen, aber es war wirklich dieser Kommentar, der mich unsicher machte: http://stackoverflow.com/questions/2417065/does-thedefault-constructor-initialize-built-in-types#comment36188015_2418195. Also null-inits, wenn Sie überhaupt keinen Konstruktor haben, und 'MyClass instance()' mit eckigen Klammern aufrufen? : | –
Logischerweise würde das Setzen eines Konstruktors auf "default" erwartet, dass die Mitglieder standardmäßig initialisiert werden. Default-Initialisierung ist nicht immer gleich Null Initialisierung. – Peter