Лекция: Перегрузка операций

В C++ операции определены для встроенных типов данных. Перегрузка операций — это переопределение действий операций применительно к объектам конкретных классов.

Средствами перегрузки операций являются специальные функции-операции с ключевым словом operator. Синтаксис функции:

tip operator @(t1 per1[,...])//@ — перегружаемая операция

{...} //tip — тип возвращаемого значения

//t1 per1[,...]- параметры функции

Функция-операция характеризуется следующими свойствами:

— перегружает все операции, кроме (.),(.*),(::),(?:); операция присваивания (=) уже предопределена для любого типа;

— наследуется, кроме функции-операции operator=();

— должна быть либо элементом-функцией класса, либо внешней функцией, но дружественной данному классу;

если функция-операция является внешней и дружественной данному классу, то для бинарных операций она должна иметь два параметра, для унарных — один параметр; выражение obj1@obj2 интерпретируется как operator @(obj1,obj2), выражение @obj интерпретируется как operator @(obj);

если функция-операция является элементом-функцией данного класса, то тогда ей передается неявный указатель this на текущий объект класса, т.е. она уже имеет один неявный параметр, и именно первый; поэтому, для бинарных операций она должна иметь один параметр, для унарных — вообще без параметров; выражение obj1@obj2 интерпретируется как obj1.operator@(obj2), т.е. результат заносится в obj1, а выражение @obj интерпретируется как obj.operator@(), т.е. результат заносится в obj;

— обычно использует в качестве параметров ссылки на объекты, а в качестве возвращаемого значения — значение объекта.

 

еще рефераты
Еще работы по информатике