Полиморфизм и перегрузка.
Пользовательские типы данных.
Одним из достоинств объектов является то, что они дают пользователю возможность создавать свои собственные типы данных. Например в случае если вам необходимо работать с объектами, имеющими две координаты, например х и у. Вам хотелось бы совершать обычные арифметические операции над такими объектами, например:
объект1=объект2+объект3
где переменные объект1, объект2 и объект3 представляют собой наборы из двух координат. Описав класс, включающий всебя пару координат, и объявив объекты этого класса с именами объект1, объект2 и объект3, мы фактически создадим новый тип данных
Обратите внимание на то, что операции присваивания и сложения для объектов пользовательских типов должны выполнять действия, отличающиеся от тех, которые они выполняют для переменных стандартных типов, например int. Как же операторы = и + распознают, какие действия необходимо совершить над операндами? Ответ на этот вопрос заключается в том, что мы сами можем задать эти действия, сделав нужные операторы методами класса объектов 1, 2 и 3.
|
|
Использование операций и функций различным образом в зависимости от того, с какими типами величин они работают, называется полиморфизмом. Когда существующая операция, например = или + наделяется возможностью совершать действия над операндами нового тина, говорят, что такая операция является перегруженной. Перегрузка представляет собой частный случай полиморфизма и является важным инструментом ООП.
4) Арифметические операции.
Язык С++ располагает средствами для того, чтобы сократить размер кода и сделать его наглядным. Одним из таких средств являются арифметические операции с присваиванием. Они помогают придать характерный вид программному коду в стиле С++.
В большинстве языков программирования типичным является оператор, подобный
а = а + б // сложение переменной а с б
В данном случае вы производите сложение с замещением уже существующего значения одного из слагаемых. Но такая форма оператора не отличается краткостью, поскольку нам приходится дважды использовать в нем имя «а». В С++ существует способ сократить подобные операторы, применяя арифметические операции с присваиванием. Такие операции комбинируют арифметическую операцию и операцию присваивания, тем самым исключая необходимость использования имени переменной дважды, Предыдущий оператор можно записать с помощью сложения с присваиванием следующим образом:
а += б // сложение переменной а с б
С присваиванием комбинируется не только операция сложения, но и другие арифметические операции: -=, *=, /«, %= и т. д. Следующий пример демонстрирует использование арифметических операций с присваиванием: