Konstruktor legt die Elementvariable nicht fest

7

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?

    
Guilherme Bernal 25.05.2012, 20:04
quelle

4 Antworten

12

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.

%Vor%

Die Strukturierung von Konstruktoren funktioniert folgendermaßen:

%Vor%

Dies ist jedoch nur mit C ++ 11 möglich.

    
nosid 25.05.2012, 20:08
quelle
3

Sie können Konstruktoren nicht wie gewöhnliche Funktionen verwenden. In Ihrem Code ruft Foo () ein neues Objekt im Stapel auf.

    
sithereal 25.05.2012 20:09
quelle
2

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.

    
Hakan Serce 25.05.2012 20:07
quelle
2

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

    
A B 25.05.2012 20:10
quelle

Tags und Links