Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class LongInt {
- bool operator< (const LongInt& other) {
- ....
- return true;
- }
- /// теперь можно так:
- /// LongInt a, b; if (a < b) cerr << "меньше!\n";
- LongInt& operator += (const LongInt& other) {
- .... // тут надо сложить *this и other (оба типа LongInt)
- return *this;
- }
- /// теперь можно a += b;
- LongInt operator+ (const LongInt& other) {
- LongInt result = *this;
- result += other;
- return result;
- }
- /// Теперь можно LongInt c = a + b;
- /// Аналогично можно перегрузить все остальные операторы
- /// По возможности операторы перегружают через другие уже перегруженные,
- /// если это не ведёт к долгим вычислениям
- /// так, можно перегрузить operator < и operator >, а потом сказать,
- /// что operator == возвращает !(*this < other || *this > other),
- /// но это может потребовать вдвое большего количества вычислений,
- /// чем реализация == вручную.
- /// С другой стороны операторы += и + должны быть почти всегда связаны так,
- /// как они связаны в этом примере.
- /// Аналогичная история с другими арифметическими операторами.
- /// Ещё operator != возвращает !(*this == other), тоже почти всегда.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement