Advertisement
gluk47

c++ operators

Nov 24th, 2012
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.60 KB | None | 0 0
  1. class LongInt {
  2.     bool operator< (const LongInt& other) {
  3.         ....
  4.         return true;
  5.     }
  6.     /// теперь можно так:
  7.     /// LongInt a, b; if (a < b) cerr << "меньше!\n";
  8.     LongInt& operator += (const LongInt& other) {
  9.         .... // тут надо сложить *this и other (оба типа LongInt)
  10.         return *this;
  11.     }
  12.     /// теперь можно a += b;
  13.  
  14.     LongInt operator+ (const LongInt& other) {
  15.         LongInt result = *this;
  16.         result += other;
  17.         return result;
  18.     }
  19.     /// Теперь можно LongInt c = a + b;
  20.  
  21.     /// Аналогично можно перегрузить все остальные операторы
  22.     /// По возможности операторы перегружают через другие уже перегруженные,
  23.     /// если это не ведёт к долгим вычислениям
  24.  
  25.     /// так, можно перегрузить operator < и operator >, а потом сказать,
  26.     /// что operator == возвращает !(*this < other || *this > other),
  27.     /// но это может потребовать вдвое большего количества вычислений,
  28.     /// чем реализация == вручную.
  29.  
  30.     /// С другой стороны операторы += и + должны быть почти всегда связаны так,
  31.     /// как они связаны в этом примере.
  32.     /// Аналогичная история с другими арифметическими операторами.
  33.     /// Ещё operator != возвращает !(*this == other), тоже почти всегда.
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement