Verständnisproblem mit unärem Negationsoperator
-
Hey!
Ich verstehe folgendes nicht:
// ... Klasse Euro ... int data; // ... public: Euro operator-() const { Euro temp; temp.data = -data; return temp; } // ... // ...Euro e1(9,50), e2(20.07), e3(-e1);Warum hat jetzt e3 den Wert -9,50 ? (Also data von e3)
Wird der Standardkopierkonstruktor bei e3(-e1) aufgerufen? Ich denke schon, aber das Element "data" von e1 wird bei der Operatorfunktion doch gar nicht verändert?? Es wird nur ein temp. Objekt angelegt, dessen Wert von data gleich -0 ist ??
Ich verstehe das nicht mehr..
-
Das Argument für den Copy-Ctor ist nicht e1 sondern der Rückgabewert von e1.operator-()...
-
Eben genau das wollte ich gerade schreiben.
Euro e1(9,50), e2(20.07), e3(e1.operator-());Und was passiert hier?
Euro temp; temp.data = -data; e3 = temp;Genau das verstehe ich nicht. Es wird doch jetzt "data" von einem temporären Objekt temp (data = 0) nach e3.data kopiert. Dann sollte e3.data den Wert -0 haben -.-
...
-
Du übersiehst
temp.data = -data;und data ist ist dabei e1.data
Kurt
-
Man bin ich dumm

Danke!