operator += przeciazenie
Ostatnio zmodyfikowano 2016-02-09 21:47
zolty13 Temat założony przez niniejszego użytkownika |
operator += przeciazenie » 2016-02-09 21:32:02 otoz mam pytanie czemu przeciazajac w ten sposób operator += wynik nie wychodzi mi za pomocą operacji u+=v; jednak gdy uzyje tej formuly z operatorem to tak. Dzieki wielkie za pomoc ;) (tak wiem ze jak w definicji operatora += dam return wektor(this->x+=p.x,this->y+=p.y); zamiat return wektor(this->x+p.x,this->y+p.y); jednka czemu się tak dzieje ) #include <iostream>
using namespace std;
class wektor { public: double x, y; wektor(); wektor( double x, double y ); wektor operator +=( const wektor & p ); ~wektor(); };
wektor::wektor() { this->x = 0; this->y = 0; cout << "Witamy-0" << endl; } wektor::wektor( double x, double y ) { cout << "Witamy-Double" << endl; this->x = x; this->y = y; } wektor wektor::operator +=( const wektor & p ) { return wektor( this->x + p.x, this->y + p.y ); } wektor::~wektor() { cout << "Zegnamy" << endl; };
int main() { wektor u( 25, 25 ); wektor v( 10, 10 ); cout << "u[" << u.x << "," << u.y << "]" << endl; cout << "v[" << v.x << "," << v.y << "]" << endl; u += v; cout << "u[" <<.x << "," << u.y << "]" << endl; return 0; }
|
|
michal11 |
» 2016-02-09 21:42:30 A dlaczego ty chcesz w ogóle cokolwiek zwracać z tej funkcji ? Przecież operator += powinien modyfikować obiekt na rzecz którego jest wywoływany. Żeby twój operator zadziałał to w main musisz zmienić: Co jest bez sensu. |
|
zolty13 Temat założony przez niniejszego użytkownika |
» 2016-02-09 21:47:35 class wektor { public: double x, y; wektor(); wektor( double x, double y ); void operator +=( const wektor & p ); ~wektor(); };
void wektor::operator +=( const wektor & p ) { this->x += p.x; this->y += p.y; }
edit a nie jednak tak class wektor { public: double x, y; wektor(); wektor( double x, double y ); wektor operator +=( const wektor & p ); ~wektor(); };
wektor wektor::operator +=( const wektor & p ) { return( this->x += p.x, this->y += p.y ); }
|
|
« 1 » |