Программирование на С++. Рейзлин В.И. - 45 стр.

UptoLike

Составители: 

47
Перегрузка унарных операций
Любая унарная операция может быть определена двумя спосо-
бами: либо как компонентная функция без параметров, либо как глобаль-
ная (возможно дружественная) функция с одним параметром. В первом
случае выражение Z означает вызов Z.operator (), во втором вызов
operator (Z).
Унарные операции, перегружаемые в рамках определенного клас-
са, могут перегружаться только через нестатическую компонентную функ-
цию без параметров. Вызываемый объект класса автоматически восприни-
мается как операнд.
Унарные операции, перегружаемые вне области класса ак гло-
бальные функции), должны иметь один параметр типа класса. Передавае-
мый через этот параметр объект воспринимается как операнд.
Синтаксис:
а) в первом случае (описание в области класса):
тип_возвр_значения operator знак_операции
б) во втором случае (описание вне области класса):
тип_возвр_значения operator знак_операции(идентификатор_типа)
Примеры.
1) class person 2) class person
{ int age; { int age;
... ...
public: public:
...
void operator++(){ ++age;} friend void operator++(person&);
}; };
void main() void person::operator++(person& ob)
{class person jon; {++ob.age;}
++jon;} void main()
{class person jon;
++jon;}
Перегрузка бинарных операций
Любая бинарная операция может быть определена двумя спо-
собами: либо как компонентная функция с одним параметром, либо как
глобальная (возможно дружественная) функция с двумя параметрами. В