jakie operatory nie moga byc przeciazone w klasie, a musza byc poza klasa koniecznie?
Wszystkie mogą być wewnątrz klasy, ale nie wszystkie mogą być poza nią. Proste?
Koniecznie muszą być poza klasą tylko w jednym przypadku, jeżeli nie możemy tej klasy zmieniać.
Np klasa pochodzi z biblioteki standardowej i chcemy umożliwić:
cout<<ObiektMojejKlasy<<endl;
Teoretycznie można by ten operator wstawić do klasy ostream, ale lepiej w takim przypadku robić to poza klasą.
tzn ze wszystkie moga byc w klasie, ale operator << juz nie? tak zrozumialem z odp @_13th_Dragon
aleks napisał(a):
tzn ze wszystkie moga byc w klasie, ale operator << juz nie? tak zrozumialem z odp @_13th_Dragon
Źle zrozumiałeś.
class Sumator
{
private:
double Sum;
public:
Sumator(double Sum=0):Sum(Sum) {}
Sumator &operator<<(double Val) { Sum+=Val; return *this; } // ten operator << bezproblemowo umieszczamy w klasie
ostream &out(ostream &s)const { return s<<Sum; }
};
ostream &operator<<(ostream &s,const Sumatror &S) { return S.out(s); } // ten operator << albo w ostream (co nie wykonalne) albo na zewnątrz
int main()
{
Sumator S;
S<<1<<2<<3; // to ten pierwszy
cout<<S<<endl; // to ten drugi
return 0;
}
akurat w moim programie musze uzyc tego sposobu abym mogl wyswietlac pzez cout obiekty wlasnej klasy. takze zrobie ta metode poza klasa, dzieki:) a jeszcze takie pytanie z cieakwosci = dlaczego nie moge tej metody dac w klasie?