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