OP-Überladeung
-
Hallo zusammen,
kann mir evtl. jemand erklären, warum falsche Werte erzeugt werden, wenn ich den Operator Präfix ++ auf das Objekt f2 anwende? Er verwendet beim rechnen die Zahlen des Objekts f1. Mit f3 geht es gut! Wo liegt der Denkfehler?Gruss Alex
#include <iostream> using namespace std; class fraction{ private: long z,n; public: fraction(long z1=0, long n1=1):z(z1),n(n1){}; void putfractionz(long z1); void putfractionn(long n2); void getfraction(); fraction operator-(const fraction& re){ z=((z*re.n) - (n*re.z)); n=n*re.n; return *this; } fraction operator++ (){ z+=n; return *this; } fraction operator-- (){ z-=n; return *this; } }; void fraction::putfractionz(long z1){ z=z1; } void fraction::putfractionn(long n1){ n=n1; } void fraction::getfraction(){ cout << "Zaehler: " << z; cout << "\nNenner: " << n; } void main(){ fraction f1,f2,f3; long z1,z2,n1,n2; cout << "Eingabe des ersten Bruchs"; cout << "\nEingabe des Bruchs Zaehler: "; cin >> z1; f2.putfractionz(z1); cout << "Eingabe des Nenners: "; cin >> n1; f2.putfractionn(n1); cout << endl; cout << "Eingabe des zweiten Bruchs"; cout << "\nEingabe Zaehler: "; cin >> z1; f3.putfractionz(z1); cout << "Eingabe Nenner: "; cin >> n1; f3.putfractionn(n1); f1 = f2-f3; cout << "\nAusgabe des Ergebnisses mit -Operator: " <<endl; f1.getfraction(); cout << endl; ++f2; cout << "\nAusgabe des Ergebnisses mit ++Operator: " <<endl; f2.getfraction(); --f2; cout << "\nAusgabe des Ergebnisses mit --Operator: " <<endl; f2.getfraction(); getchar(); getchar(); }
-
Dein operator- ändert seinen linken Operanden und gibt ihn zurück. Das ist eher unüblich
-
Danke für die schnelle Hilfe
Grus Alex