Бинарные операторы
В следующей таблице приведен список операторов, которые можно перегрузить.
Переопределяемые бинарные операторы
Оператор |
Имя |
---|---|
, |
Comma |
!= |
Неравенство |
% |
Модуль |
%= |
Модуль/назначение |
& |
Побитовое И |
&& |
Логическое И |
&= |
Побитовое И/назначение |
* |
Умножение |
*= |
Умножение/назначение |
+ |
Сложение |
+= |
Сложение/назначение |
– |
Вычитание |
–= |
Вычитание/назначение |
–> |
Выбор члена |
–>* |
Выбор указателя на член |
/ |
Деление |
/= |
Деление/назначение |
< |
Меньше |
<< |
Сдвиг влево |
<<= |
Сдвиг влево/назначение |
<= |
Меньше или равно |
= |
Присваивание |
== |
Равенство |
> |
Больше |
>= |
Больше или равно |
>> |
Сдвиг вправо |
>>= |
Сдвиг вправо/назначение |
^ |
Исключающее ИЛИ |
^= |
Исключающее ИЛИ/назначение |
| |
Побитовое включающее ИЛИ |
|= |
Побитовое включающее ИЛИ/назначение |
|| |
Логическое ИЛИ |
Чтобы объявить функцию бинарного оператора как нестатический член, необходимо объявить ее в виде
возвращаемый-тип операторop**(** arg )
где ret-type — возвращаемое значение, op — один из операторов, перечисленных в предыдущей таблице, а arg — аргумент любого типа.
Чтобы объявить функцию бинарного оператора как глобальную функцию, необходимо объявить ее в виде
ret-type operatorop**(** arg1**,** arg2 )
где ret-type и op — элементы, описанные для функций операторов членов, а arg1 и arg2 — аргументы. Хотя бы один из аргументов должен принадлежать типу класса.
Примечание
Ограничений на возвращаемые типы бинарных операторов нет, однако большинство пользовательских бинарных операторов возвращает тип класса или ссылку на тип класса.