Schon wieder ein Problem

Re: Schon wieder ein Problem

Beitragvon mabl » 13.07.2010 06:46

phys hat geschrieben:
mabl hat geschrieben:
Code: Alles auswählen
polar2d polar2d::operator*=(double x)
{
   Laenge*=x;
   
   return *this;
}




Ich verstehe nicht warum durch ein return der Vektor selber verändert wird. kann mir das jemand erklären?


Das Objekt wird durch das return nicht veraendert. Das Geschieht durch Laenge*=x; Da Laenge das Attribut der Klasse ist. Der *= operator war aber so definiert, dass er ein polar2d Objekt zurueck gibt. Sinnigerweise genau das der aktuellen Rechnung, was also schon veraendert wurde. Durch das Return kann man dann das Ergebnis der Multiplikation gleich weiterverwenden:
Code: Alles auswählen
polar2d a(1,2);
polar2d b = (a*=2)


Man kann den *= operator auch als void definieren und sich so das return sparen... - aber dann nicht mehr wie gerade jetzt vorgefuehrt weiter rechnen.
Benutzeravatar
mabl
Site Admin
 
Beiträge: 741
Registriert: 25.10.2008 11:28
Wohnort: Ettlingen, Karlsruhe

Re: Schon wieder ein Problem

Beitragvon phys » 13.07.2010 09:02

Vielen Dank. :)
phys
 
Beiträge: 67
Registriert: 14.06.2009 11:26

Vorherige

Zurück zu Programmieren

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron