Читать нас в Telegram

Перегрузка операторов в C++. Способы применения

Рубрика: Переводы
27 сентября 2016 00:10
32342
1

В прошлой части мы рассмотрели основные аспекты использования перегрузки операторов. В этом материалы вашему вниманию будут представлены перегружаемые операторы C++. Для каждого раздела характерна семантика, т.е. ожидаемое поведение. Кроме того, будут показаны типичные способы объявления и реализации операторов. 

В примерах кода X означает пользовательский тип, для которого реализован оператор. T — это необязательный тип, пользовательский либо встроенный. Параметры бинарного оператора будут называться lhs и rhs. Если оператор будет объявлен как метод класса, у его объявления будет префикс X::.


operator=

Копирование

Перемещение (начиная с C++11)


operator+, -, *, /, %


Унарные operator+, –


operator<<, >>


Бинарные operator&, |, ^


operator+=, -=, *=, /=, %=


operator&=, |=, ^=, <<=, >>=


operator==, !=


operator<, <=, >, >=


operator++, –


operator()


operator[]


operator!


explicit operator bool


operator&&, ||


Унарный operator*


operator->


operator->*


Унарный operator&


operator,


operator~


Операторы приведения типов


operator new, new[], delete, delete[]

Эти операторы полностью отличаются от всех вышеупомянутых, поскольку они не работают с пользовательскими типами. Их перегрузка весьма сложна, и поэтому не будет здесь рассматриваться.


Заключение

Основной мыслью является следующее: не стоит перегружать операторы только потому, что вы умеете это делать. Перегружайте их лишь в тех случаях, когда это выглядит естественным и необходимым. Но помните, что если вы перегрузите один оператор, то придётся перегружать и другие.

Призы для программистов — нужно пройти опрос. Больше ответов — больше шансы

Перевод статьи «Operator Overloading: Common Practice»

Темы: C++
0