Unäre Operatoren Überladen
-
Hallo,
ich habe gerade mal ein wenig zur Überladung unärer Operatoren gelesen. Dabei bin ich auf folgende Beispiele gestoßen:myComplex operator-() const { return myComplex(-_real, -_image ); }Hätte man das nicht gleich so schreiben können:
myComplex& operator-() { -_real; -_image; return *this; }Und beim increment Operator muss ich ja die pre und postfix Variante implementieren. Man nutzt ja bei der Postfix Variante ein dummy Argument, dass der Compiler die Methoden auseinander halten kann. Aber woher weis der Comiler, dass die Methode mit dem Dummy Argument die Postfix Variante seien soll?
-
Wenn du beim 2. Beispiel "--_real" meinst, dann würde diese Funktion ja das this-Objekt ändern, während die erste Version ein neues myComplex-Objekt erzeugt.
Und der Compiler ruft bei einem Postfix (x++) intern einfach "operator++(0)" (oder mit einer beliebigen anderen Zahl) auf - und bei einem Prefix (++x) eben operator++().
-
++-- schrieb:
Hallo,
ich habe gerade mal ein wenig zur Überladung unärer Operatoren gelesen. Dabei bin ich auf folgende Beispiele gestoßen:myComplex operator-() const { return myComplex(-_real, -_image ); }Hätte man das nicht gleich so schreiben können:
myComplex& operator-() { -_real; -_image; return *this; }Was machen denn deiner Meinung nach diese Ausdrücke?
-_real; -_image;Der Wert von _real und _image ändert sich hier nicht.
Und was das Ändern und Zurückgeben vonthis angeht: Keine gute Idee, da es nicht die erwartete Semantik erfüllt, das Objekt zu ändern, vor dem ein - steht. Angenommen int würde sich so verhalten, dann würde sowas passieren:
int i=6; cout << -i; // i ist nun -6Und beim increment Operator muss ich ja die pre und postfix Variante implementieren. Man nutzt ja bei der Postfix Variante ein dummy Argument, dass der Compiler die Methoden auseinander halten kann. Aber woher weis der Comiler, dass die Methode mit dem Dummy Argument die Postfix Variante seien soll?
Weil die Variante mit dem Dummy Argument die Postfix Variante sein soll!
-
Ist das so festgelegt, das mit Dummy Argument die Postfix Variante gemeint ist?
-
++-- schrieb:
Ist das so festgelegt, das mit Dummy Argument die Postfix Variante gemeint ist?
Ja.