Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Список операторов, для которых разрешена перегрузка

Читайте также:
  1. I. ОПРЕДЕЛЕНИЕ НЕКОТОРЫХ ОСНОВНЫХ ТЕРМИНОВ И ПОНЯТИЙ
  2. MP-семиотика некоторых изменений ВНЧС.
  3. Quot;О некоторых затруднениях
  4. Quot;Стаття 581. Список присяжних
  5. VIII. БИБЛИОГРАФИЧЕСКИЙ СПИСОК
  6. Аттестованные судьи Федерации Мажореток России. Точный список судей будет опубликован позднее
  7. Б) Жертвоприношение Аллаху в тех местах, в которых приносят жертвы неверующие и многобожники.

Следующие операторы не допускают перегрузку, (см. табл. 5).

Таблица 5

Список операторов, для которых запрещена перегрузка

Перегрузка операторов подчиняется следующим правилам:

• приоритеты операторов и правила ассоциации, принятые для встроенных типов данных, остаются неизменными при оценке выражений с перегруженными операторными функциями;

• операторная функция не может изменить поведение оператора по отношению к встроенным типам данных;

• операторная функция должна быть либо элементом класса, либо воспринимать один или несколько аргументов, имеющих тип класса;

• операторная функция не может иметь аргументов по умолчанию;

• за исключением оператора operator=() операторные функции наследуются.

Имя операторной функции начинается с ключевого слова operator, за которым следует сам оператор, например operator<<. Операторная функция объявляется и может быть вызвана, как любая другая функция. Использование операторной функции как оператора является просто сокращенной формой ее явного вызова. Например, если для некоторого класса Complex определен оператор +, то следующие формы вызова этого оператора являются эквивалентными:

void f(Complex a, Complex b)

{

Complex c = a + b; //сокращенная форма

Complex d = a.operator+ (b); //полная форма

}

Нужно отметить, что необходимо соблюдать осторожность при переопределении операторов, особенно при переопределении оператора присваивания. Так, например, вы должны предусмотреть присваивание объекта самому себе. В некоторых ситуациях упущение этого момента может запросто привести к зависанию программы. Такая проверка чаще всего осуществляется путем сравнения адресов объектов, стоящих справа и слева от знака равенства.

 


Дата добавления: 2015-07-26; просмотров: 44 | Нарушение авторских прав


Читайте в этой же книге: Инициализация данных | Структуры | Синтаксис описания шаблона | Полиморфизм | Иерархия классов | Связь с указателями | Указатели | ПРЕДСТАВЛЕНИЕ О ДЕСТРУКТОРЕ | Перегрузка конструкторов | Оператор return. Точка вызова и точка возврата |
<== предыдущая страница | следующая страница ==>
Операторная функция operator() с несколькими параметрами| Пояснительная записка

mybiblioteka.su - 2015-2024 год. (0.008 сек.)