Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В 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;
- обычно использует в качестве параметров ссылки на объекты, а в качестве возвращаемого значения - значение объекта.
Дата публикования: 2014-11-26; Прочитано: 266 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!