Главная arrow С++ (часть 4) arrow Перегрузка операций

Перегрузка операций

Одна из наиболее важных функциональных характеристик С++ — механизм перегрузки операций, обеспечивающий расширяемость типов данных (type extensibility). Расширяемость типов позволяет вам добавлять и полностью встраивать новые типы данных в программную среду С++. Она основана на двух функциональных возможностях языка. Первая — классы (тип данных class), которые позволяют вам описать новый тип данных.
Вторая — перегрузка операций1 (operator overloading) — дает возможность определить, что означает та или иная операция в зависимости от типа класса. Благодаря использованию классов и перегрузке операций вы можете создавать новые типы данных и обрабатывать их, как и встроенные типы, — посредством операций.
Расширяемость типов — весомая характеристика, делающая язык С++ скорее открытой системой, чем закрытой. Представьте, что вам необходимо обработать координаты трехмерной системы. Вы можете сделать это, создав новый тип данных ThreeD, и затем определить различные операции над объектами этого типа. Например, можно использовать операцию + для сложения двух переменных типа ThreeD, или операцию == для проверки их равенства. Далее приведен код, который оперирует переменными ThreeD так же, как переменными любого встроенного типа: ThreeD а(0, 0, 0), Ь(1, 2, 3), с(5,6,7);
а = b + с; // ...
if (а == с)// ...
Без механизма перегрузки операций обработку объектов типа ThreeD пришлось бы вести С ПОМОЩЬЮ ВЫЗОВа фунКЦИЙ, таКИХ как: addThreeDO и
EquaiThreeD (), что представляется менее удобным.