Rechenoperatoren neuschreiben?
-
Hi nochmal,
wie ihr vielleicht eben in meinem anderen Post gesehen habt, weiß ich nicht wie man solche Operatoren wie +, - und so neuschreibt.
Denn wenn man:Typ Klasse::operator + (typ &var);
macht, dann hat man doch nur eine Variable (var) zur verfügung, oder nicht?
Woher bekommt man den den 2ten Wert zum Rechnen?
Genauso
void Klasse::operator += (typ &var);
Da hat man doch nur den WErt var und kann nichts zurückgeben...
Ich hab mir ein Beispiel angeguckt aber nicht verstanden...
MfG, feiadragon
-
feiadragon schrieb:
Hi nochmal,
wie ihr vielleicht eben in meinem anderen Post gesehen habt, weiß ich nicht wie man solche Operatoren wie +, - und so neuschreibt.
Denn wenn man:Typ Klasse::operator + (typ &var);
macht, dann hat man doch nur eine Variable (var) zur verfügung, oder nicht?
Woher bekommt man den den 2ten Wert zum Rechnen?
Genauso
void Klasse::operator += (typ &var);
Da hat man doch nur den WErt var und kann nichts zurückgeben...
Ich hab mir ein Beispiel angeguckt aber nicht verstanden...
MfG, feiadragon
Wenn du den Operator als Member überlädst (was man bei manchen Operatoren machen MUSS, z.B. Zuweisungsop), dann ist der 1. Operand this.
void Klasse::operator += (typ &var);
Siehe oben. Hier ist wieder der 1. Operand this. Wenn du z.B: schreibst a+=b, dann ist das ja nichts anderes als a.operator+(b). b ist damit der Parameter und a = this.
PS: der Operator+= sollte nicht void zurückgeben
-
Danke!!!
Ich glaub ich habs verstanden!!!!
MfG, feiadragon
-
[klugscheiss]
myClass a, b; a + b; // ist das gleiche wie: a.operator+(b);
das wollte ich schon immer einmal sagen
[/klugscheiss][edit]Ups, das hat ja interpreter schon geschrieben...[/edit]
-
Wolle. schrieb:
[klugscheiss]
myClass a, b; a + b; // ist das gleiche wie: a.operator+(b);
das wollte ich schon immer einmal sagen
[/klugscheiss][edit]Ups, das hat ja interpreter schon geschrieben...[/edit]
[NochMehrKlugScheiss]
a + b; // kann ist allerdings auch dasselbe wie: operator+(a,b);
[/NochMehrKlugScheiss]
-
Also immer diese dummen klugscheisser
Aber wie ist sowas
interpreter schrieb:
operator+(a,b);
möglich, wenn nur folgende überladene Version existiert
T operator+(const T &op);
-
den + operator kann man auch ausserhalb einer klasse als
void operator(T a,T b){ //tuwas }
überladen,und dann geht das
-
@otze:
Das ist mir schon klar aber...[klugsch****]
dann stimmt interpreters Aussage nicht, da wir den +-Operator nicht für diese Verwendung überladen haben.
@interpreter :p
[/klugsch****]
-
Wolle. schrieb:
@otze:
Das ist mir schon klar aber...Nix aber. Der operator+ hat eine Funktion zu sein.
zB aus dem Grund, weil ihr den op+ falsch überladen habt. Wenn er Member ist, dann macht ihn const. Aber besser ihr macht ihn non Member.
-
Wolle. schrieb:
@otze:
Das ist mir schon klar aber...[klugsch****]
dann stimmt interpreters Aussage nicht, da wir den +-Operator nicht für diese Verwendung überladen haben.
@interpreter :p
[/klugsch****]Habe ich auch nie behauptet. Ich habe lediglich gezeigt, dass a+b eben NICHT zwangsläufig zu a.operator+(b) werden muss und das völlig unabhängig von dem hier aufgeführten Sourcecode.