Przeciążanie operatorów na przykładzie operator +=
Ostatnio zmodyfikowano 2012-09-09 13:31
diego997 Temat założony przez niniejszego użytkownika |
Przeciążanie operatorów na przykładzie operator += » 2012-09-07 18:48:33 class v3d { public: int liczba; v3d & operator +=( int ); }
v3d & v3d::operator +=( int value ) { this->liczba += value; cout << this << endl; return * this; }
Nie rozumie do końca jak działają operatory co w nich się dzieje, dlaczego w 1* muszę na końcu zwracać wkaznik this 3*, a nie mogę np napisać samego 2*? 4* - co się w ogóle dzieje w tym miejscu ? |
|
DejaVu |
» 2012-09-07 19:25:44 Co do zwracania wartości - zwracasz referencję na obiekt, a nie wskaźnik na obiekt. Zmienna this zwraca wskaźnik na obiekt, a Ty potrzebujesz referencję, stąd zapis * this . /edit: Co do rozumienia/nierozumienia - taka jest z góry ustalona konstrukcja operatorów i trzeba ją zaakceptować. Tu masz kilka przykładów przeciążania operatorów: Przeciążanie operatorów. |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-09-07 19:51:17 czyli: Nie odnosi się do obiektów znajdujących się po lewej stronie ? Po prostu się to zwraca i tyle ? EDIT: Nie rozumie tego: class klasa { int liczba; public: klasa & operator =( klasa & ); };
klasa & klasa::operator =( klasa & obj ) { this->liczba = obj; return * this; }
Po co mamy zwracać jeszcze tą referencję ? Tak ma byc i z tym się nie dyskutuje ? |
|
Mrovqa |
» 2012-09-07 20:18:58 Po co mamy zwracać jeszcze tą referencję ? Tak ma byc i z tym się nie dyskutuje ? |
Gdyby nie było referencji, to nie mógłbyś "kaskadowo" przypisywać, tzn. zapis a = b = c; byłby niepoprawny. @down nie doczytałem tego * this , myślałem, że autorowi chodzi o void , mój błąd. |
|
DejaVu |
» 2012-09-07 20:20:21 Zapis byłby poprawny, jednak nie działałby zgodnie z oczekiwaniami. |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-09-07 20:58:14 Moglibyście mi tylko powiedzieć jaka różnica jest między tym: klasa & operator +( klasa & );
A tym klasa operator +( klasa & );
|
|
DejaVu |
» 2012-09-07 21:20:20 A jaka jest różnica między argumentem przekazanym przez referencję i bez referencji? |
|
Mrovqa |
» 2012-09-07 21:22:23 Jeżeli zwracasz obiekt, to jest on kopiowany i trochę to trwa. Natomiast przy zwracaniu referencji, zwracamy TEN SAM obiekt, a nie jego kopię. Referencja jest po prostu szybsza. |
|
« 1 » 2 3 |