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 🙂


Anmelden zum Antworten