08. juli 2005 - 16:50Der er
11 kommentarer og 1 løsning
Overload af operator
Hejsa jeg sidder og prøver at få styr på operator overloading. Jeg har lavet lidt forskellige implementeringer, men er lidt i tvivl om der er ulemper eller fordele ved de forskellige måder at gøre det på. Her er et lille eksempel:
Første måde:
class Point { public: (constructor osv) friend Point operator - (const Point &, const Point &);
protected: double _x,_y; };
Point operator - (const Point &pkt1, const Point &pkt2) { Point temp; temp._x = pkt1._x - pkt2._x; temp._y = pkt1._y - pkt2._y;
return temp; }
Anden måde:
class Point { public: (constructor osv) Point operator - (const Point &);
protected: double _x,_y; };
Point Point::operator - (const Point &pkt) { Point temp; temp._x = _x - pkt._x; temp._y = _y - pkt._y;
return temp; }
Er der nogel fordele eller ulemper ved at bruge den ene fremfor den anden såvidt jeg kan se gør det ingen forskel?
Hvis der er nogle der ligger inde med nogle lækre tutorials/artikler ect. om emnet vil jeg sætte stor pris på dem..
Ok, lige for at kontrollere at jeg har forstået det korrekt:
Point+double - Ville være nem nok at lave på begge måder med: friend Point operator + (const Point &, const double &); eller Point operator + (const double &dbl);
double+point ville dermod være klart nemmere med en friend Point operator + (const double &, const Point &); med "den anden metode" ville det dermod være en del mere kompliceret, og involvere at man overloaded operator på std::double ?
Jeg vil normalt vælge anden metode, fordi jeg synes at det er logisk at operatorer der virker på et object af en class, er member i class'en.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.