referencje w przeciążeniu operatorów - różnice
Ostatnio zmodyfikowano 2012-01-08 13:49
astro41 Temat założony przez niniejszego użytkownika |
referencje w przeciążeniu operatorów - różnice » 2012-01-08 10:32:41 Witam Mam problem ze zrozumieniem różnicy w działaniu programu dla różnego zastosowania referencji. Mam klasę class zwierze { public: int predkosc; zwierze operator +=( zwierze & zwierzak ); };
Przykładowo dla operatora += 4 możliwości z & w różnych miejscach zwierze zwierze::operator +=( zwierze & zwierzak ) { predkosc += zwierzak.predkosc; }
zwierze & zwierze::operator +=( zwierze & zwierzak ) { predkosc += zwierzak.predkosc; }
zwierze zwierze::operator +=( zwierze zwierzak ) { predkosc += zwierzak.predkosc; }
zwierze & zwierze::operator +=( zwierze zwierzak ) { predkosc += zwierzak.predkosc; }
i teraz tworzymy dwa obiekty: zwierze zolw1; zwierze zolw2; zolw1.predkosc = 2; zolw2.predkosc = 20;
wykorzystując przeładowany operator we wszystkich czterech wariantach nie widzę różnic w działaniu programu. Jakie jest więc zastosowanie i czego ja tu nie rozumiem ?:) Pozdrawiam |
|
pekfos |
» 2012-01-08 12:34:10 zwierze.zolw1 = 2; zwierze.zolw2 = 20; A to co? |
|
astro41 Temat założony przez niniejszego użytkownika |
» 2012-01-08 12:56:41 Pomyłka :) zolw1.predkosc = 2; zolw2.predkosc = 20;
|
|
DejaVu |
» 2012-01-08 13:33:13 Wiedzę o którą pytasz nie wynika ze znajomości operatorów tylko znajomości jak działa referencja.
PS. Cały ten kod jest niepoprawny. |
|
astro41 Temat założony przez niniejszego użytkownika |
» 2012-01-08 13:41:22 Wiedzę o którą pytasz nie wynika ze znajomości operatorów tylko znajomości jak działa referencja.
Właśnie! Po to powstał ten temat :) Nie do końca rozumiem różnice w czterech przeładowaniach pokazanych wyżej. Rozumiem, że tworzymy referencję, aby działać bezpośrednio na obiekcie. Jeśli piszemy bez & to znaczy, że tworzymy lokalną kopię a konkretny obiekt nie ulega zmianie (?) Bardzo prosiłbym o przykład/przykłady gdzie te przeładowania faktycznie różnią się zwracaną wartością, bardzo pomogłoby mi to w zrozumieniu tematu. Pozdrawiam |
|
DejaVu |
» 2012-01-08 13:49:33 Klasa kopiaObiektu( Klasa & bla ) { return bla; }
Klasa & oryginalnyObiekt( Klasa & bla ) { return bla; }
Poczytaj lepiej o tych referencjach... |
|
« 1 » |