380 Часть III. Современное программирование на C++

решается тем, что компилятор уточняет имена, то есть создает уникальные имена, исходя из имен, а также количества и типа аргументов оператор функций.

Тип возвращаемых значений

У оператор-функций нет ограничений на тип возвращаемых значений. Можно определять оператор-функции, операнды которых еще не появились на свет, поэтому возвращаемый тип может быть любым. Обычно результатом применения операции является экземпляр того класса, для которого эта операция создана.

Не все операции перегружаемы. Мы еще разберемся в том, что может, а что не может быть перегружено; помимо этого вы узнаете, как перегружать многие разновидности функций и ознакомитесь с некоторыми конструктивными рекомендациями о том, когда использовать перегрузку операций и как определить необходимое число аргументов и возвращаемый тип.

Обзор перегружаемых операций

Большинство операций перегружаемо, однако не все. Так захотели разработчики языка. Ниже мы рассмотрим два множества — перегружаемых и не перегружаемых операций, после чего изучим другие применения ключевого слова operator.

Было бы неразумно рассчитывать немедленно научиться правильно писать оператор-функции для любого мыслимого типа данных. Будьте терпеливы и последовательны, и ничто не в силах будет остановить ваш прогресс.

Перегружаемые операции

В табл. 16.1 приведен список всех операций, которые могут быть перегружены, т. е. тех, поведение которых можно переопределить для новых типов данных. Список, однако, не охватывает всех возможных вариантов применения ключевого слова operator.

h03801.jpg

Операция

Комментарий

new delete

+

-

Если вы определяете операцию new, определяйте также и'операцию delete

Сложение Вычитание