Перегрузка операторов.
Перегрузка операторов — в программировании — один из способов реализации полиморфизма, заключающийся в возможности одновременного существования в одной области видимости нескольких различных вариантов применения оператора, имеющих одно и то же имя, но различающихся типами параметров, к которым они применяются.
Перегрузка оператора состоит в изменении смысла оператора (например, оператора плюс (+), который обычно в C++ используется для сложения) при использовании его с определенным классом. В данном уроке вы определите класс string и перегрузите операторы плюс и минус. Для объектов типа string оператор плюс будет добавлять указанные символы к текущему содержимому строки. Подобным образом оператор минус будет удалять каждое вхождение указанного символа из строки. К концу данного урока вы изучите следующие основные концепции:
-Вы перегружаете операторы для улучшения удобочитаемости ваших программ, но перегружать операторы следует только в том случае, если это упрощает понимание вашей программы.
-Для перегрузки операторов программы используют ключевое слово C++ operator.
-Переопределяя оператор, вы указываете функцию, которую C++ вызывает каждый раз, когда класс использует перегруженный оператор. Эта функция, в свою очередь, выполняет соответствующую операцию.
-Если ваша программа перегружает оператор для определенного класса, то смысл этого оператора изменяется только для указанного класса, оставшаяся часть программы будет продолжать использовать этот оператор для выполнения его стандартных операций.
|
|
-C++ позволяет перегружать большинство операторов, за исключением четырех которые описаны в таблице 24, которые программы не могут перегружать.
Перегрузка операторов может упростить наиболее общие операции класса и улучшить читаемость программы. Найдите время для эксперимента с программами, представленными в этом уроке, и вы обнаружите, что перегрузка операторов выполняется очень просто.
Таблица 24. Операторы C++, которые ваши программы не могут перегрузить.
оператор | назначение | пример |
. | Выбор элемента | object.member |
.* | Указатель на элемент | object.*member |
:: | Разрешение области видимости | classname::member |
?: | Условный оператор сравнивания | с = (а > b)? а: b; |
35.Объекты-владельцы. «Интеллектуальные» указатели.
Дата добавления: 2015-12-21; просмотров: 19; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!