|
Программирование >> Структурное программирование
Перегрузка операций Цели Понять, как переопределять операции для работы с новыми типами. Понять, как преобразовывать объект из одного класса в другой. Усвоить, когда нужно, и когда не следует перегружать операции. Изучить несколько интересных классов, которые используют перегруженные операции. Создать абстрактные типы данных массив, строка и дата. Резюме Терминология Типичные ошибки программирования Хороший стиль программирования Советы по повышению эффективности Замечания по технике программирования Упражнения для самопроверки Ответы на упражнения для самопроверки Упражнения 8.1. Введение в главах 6 и 7 мы познакомились с основами классов в С++ и понятием абстрактных типов данных (АТД). Манипуляции над объектами классов (то есть, экземплярами АТД) реализовывались путем посылки сообщений объектам (в виде вызовов функций-элементов). Запись этих вызовов функций громоздка для определенного рода классов, особенно математических классов. Для классов такого рода было бы удобно использовать богатый набор имеющихся в С++ встроенных операций для измененных объектов. В этой главе мы покажем, как предоставить операциям С++ возможность работать с объектами классов. Такой механизм называется перегрузкой операций. Это простой и естественный путь обогащения С++ новыми возможностями. План 8.1 Введение 8.2 Основы перегрузки операций 8.3 Ограничения на перегрузку операций 8.4 Функции-операции как элементы класса и как дружественные функции 8.5 Перегрузка операций поместить в поток и взять из потока 8.6 Перегрузка унарных операций 8.7 Перегрузка бинарных операций 8.8 Учебный пример: класс массив 8.9 Преобразования типов 8.10 Учебный пример: класс строка 8.11 Перегрузка ++ и - 8.12 Учебный пример: класс дата 8.2. Основы перегрузки операций Программирование на С++ - процесс, чувствительный к типам и основанный на типах. Программист может использовать встроенные типы, а может определить и новые типы. Встроенные типы можно использовать с богатым набором операций С++. Операции обеспечивают программиста краткими средствами записи для выражения манипуляций с объектами встроенного типа. Программист может также использовать операции с типами, определенными пользователем. Хотя С++ и не позволяет создавать новые операции, он все же позволяет перегружать существующие операции так, что при использовании этих операций с объектами классов они приобретают смысл, соответствующий новым типам. Это одно из наиболее мощных средств С++. Замечание по технике программирования 8.1 Перегрузка операций способствует расширяемости С++, являясь, несомненно, одним из наиболее привлекательных свойств этого языка. Хороший стиль программирования 8.1 Используйте перегрузку операций, если она делает программу более ясной по сравнению с применением явных вызовов функций для выполнения тех же операций. Хороший стиль программирования 8.2 Избегайте чрезмерного или непоследовательного использования перегрузки операций, так как это может сделать программу непонятной и затруднит ее чтение. Операция используется в С++ для многих целей: и как операция поместить в поток, и как операция сдвига влево. Это пример перегрузки операции. Подобным же образом перегружается операция ; она используется и как операция взять из потока, и как операция сдвига вправо. Каждая из этих операций перегружена в библиотеке классов С++. Язык С++ сам по себе перегружает + и -. Эти операции выполняются по-разному, в зависимости от того, входят ли они в выражения целочисленной арифметики, арифметики с плавающей запятой или арифметики указателей. С++ предоставляет программисту возможность перегружать большинство операций и делать их чувствительными к контексту, в котором они используются. Компилятор генерирует соответствующий код, основываясь на способе использования операции. Некоторые операции перегружаются часто, особенно операция присваивания и различные арифметические операции, такие как + и -. Работа, выполняемая перегруженными операциями, может быть также выполнена и с помощью явных вызовов функций, но запись операции обычно читать легче. Мы обсудим, когда следует использовать перегрузку операции, а когда нет. Мы покажем, как перегружать операции, и дадим много законченных программ, использующих перегруженные операции.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |