Программирование >>  Структурное программирование 

1 ... 165 166 167 [ 168 ] 169 170 171 ... 342



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

Цели

Понять, как переопределять операции для работы с новыми типами.

Понять, как преобразовывать объект из одного класса в другой.

Усвоить, когда нужно, и когда не следует перегружать операции.

Изучить несколько интересных классов, которые используют перегруженные операции.

Создать абстрактные типы данных массив, строка и дата.



Резюме Терминология Типичные ошибки программирования Хороший стиль программирования Советы по повышению эффективности Замечания по технике программирования Упражнения для самопроверки Ответы на упражнения для самопроверки Упражнения

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

Избегайте чрезмерного или непоследовательного использования перегрузки операций, так как это может сделать программу непонятной и затруднит ее чтение.

Операция используется в С++ для многих целей: и как операция поместить в поток, и как операция сдвига влево. Это пример перегрузки операции. Подобным же образом перегружается операция ; она используется и как операция взять из потока, и как операция сдвига вправо. Каждая из этих операций перегружена в библиотеке классов С++. Язык С++ сам по себе перегружает + и -. Эти операции выполняются по-разному, в зависимости от того, входят ли они в выражения целочисленной арифметики, арифметики с плавающей запятой или арифметики указателей.

С++ предоставляет программисту возможность перегружать большинство операций и делать их чувствительными к контексту, в котором они используются. Компилятор генерирует соответствующий код, основываясь на способе использования операции. Некоторые операции перегружаются часто, особенно операция присваивания и различные арифметические операции, такие как + и -. Работа, выполняемая перегруженными операциями, может быть также выполнена и с помощью явных вызовов функций, но запись операции обычно читать легче.

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



1 ... 165 166 167 [ 168 ] 169 170 171 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика