Mein Code:
%Vor%Die Ausgabe:
%Vor% Warum ist der foo.bar
-Wert 6 nicht? Foo()
wird aufgerufen, aber bar
wird nicht auf 1 gesetzt. Warum?
Im folgenden Konstruktor delegiert die Zeile mit Foo()
nicht an den vorherigen Konstruktor. Stattdessen wird ein neues temporäres Objekt vom Typ Foo
erstellt, das nicht mit *this
verknüpft ist.
Die Strukturierung von Konstruktoren funktioniert folgendermaßen:
%Vor%Dies ist jedoch nur mit C ++ 11 möglich.
Weil Sie diese Zeile im Konstruktor haben:
%Vor% Sie versuchen, den anderen Konstruktor mit Foo()
call im zweiten Konstruktor aufzurufen, aber er erstellt nur eine temporäre Foo
-Instanz.
Sie sollten keinen Konstruktor von einem anderen Konstruktor aufrufen
Siehe
Kann ich einen Konstruktor von einem anderen Konstruktor (do constructor chaining) in C ++ aufrufen?
Es sei denn, Sie führen C ++ 11 aus
Tags und Links class c++ constructor