przeciazanie operatorw

0

jakie operatory nie moga byc przeciazone w klasie, a musza byc poza klasa koniecznie?

0

Wszystkie mogą być wewnątrz klasy, ale nie wszystkie mogą być poza nią. Proste?

0

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ą.

0

tzn ze wszystkie moga byc w klasie, ale operator << juz nie? tak zrozumialem z odp @_13th_Dragon

0
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;
  }
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?

1 użytkowników online, w tym zalogowanych: 0, gości: 1