Operatoren überladen
-
In meinem Buch muss ich eine Klasse für Brüche schreiben. Dabei muss ich ein paar Operatoren überladen. Ich habe das bei dem "+" Operator so gemacht:
//Mitglied der Klasse Fraction Fraction& operator+=(const Fraction& a) { zaehler=zaehler*a.nenner+a.zaehler*nenner; nenner*=a.nenner; return *this; } //Friend von Klasse Fraction inline Fraction operator+(const Fraction &a,const Fraction &b) { Fraction temp(a.zaehler,a.nenner); return temp+=b; }
Im Buch ist das aber so gelöst worden.
//Mitglied der Klasse Fraction Fraction& operator+=(const Fraction& a) { zaehler=zaehler*a.nenner+a.zaehler*nenner; nenner*=a.nenner; return *this; } //Friend von Klasse Fraction Fraction operator+(const Fraction& a,const Fraction& b) { Fraction temp; temp.nenner=a.nenner*b.nenner; temp.zaehler=a.zaehler*b.nenner+b.zaehler*a.nenner; return temp; }
Ich dachte bei inline Funktionen gäbe es keine Verzögerung, weil der Funktionsaufruf weg bleibt. Also gäbe es doch keinen Unterschied zwischen beiden Lösungen, oder?
-
Deine Version ist die bessere, es ist schöner Stil den operator+ über operator+= zu implementieren.
-
Danke für deine Antwort