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