ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 8) онлайн
Резюме
В этой главе мы увидели, как обычным операциям языка C++ придать новый смысл при использовании их с определенными пользователем типами. Ключевое слово operator используется для перегрузки операций, при этом операция будет выполнять действия, которые определит для нее программист.
Преобразование типов близко к перегрузке операций. Некоторые преобразо- вания происходят между основными типами и типами, определенными пользова- телем. При этом используются два подхода: использование конструктора с одним аргументом при изменении основного типа на определенный пользователем и использование операции преобразования при изменении определенного пользо- вателем типа на основной. Если преобразования происходят между различными определенными пользователем типами, то используются оба этих подхода.
В табл. 8.2 отражены возможные варианты преобразований.
Таблица 8.2. Преобразование типов
|
|
Процедура в классе назначения |
Процедура в исходном классе |
|
Основной в основной |
(Встроенные операции преобразования) |
|
|
Основной к классу |
Конструктор |
N/A |
|
Класс в основной |
N/A |
Операция преобразования |
|
Класс в класс |
Конструктор |
Операция преобразования |
Конструктор, объявленный с ключевым словом explicit, не может быть ис- пользован в ситуации неявного преобразования данных. Данные, объявленные с ключевым словом mutable, могут быть изменены, даже если их объект объявлен как const.
На диаграмме классов UML показываются классы и отношения между ни- ми. Объединение представляет собой концептуальное взаимоотношение между объектами реального мира, которые в программе представлены в виде классов. Объединение может иметь направление от одного класса к другому: это называ- ется навигацией.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
