Полиморфизм С++
Слово «полиморфизм» означает наличие множества форм. Проще говоря, мы можем определить полиморфизм как способность сообщения отображаться более чем в одной форме.
Реальным примером полиморфизма является человек, который одновременно может иметь разные характеристики. Мужчина одновременно и отец, и муж, и работник. Таким образом, один и тот же человек в разных ситуациях ведет себя по-разному. Это называется полиморфизмом. Полиморфизм считается одной из важных особенностей объектно-ориентированного программирования.
Типы полиморфизма
- Полиморфизм времени компиляции.
- Полиморфизм времени выполнения.
1. Полиморфизм времени компиляции
Этот тип полиморфизма достигается перегрузкой функций или перегрузкой операторов.
A. Перегрузка функций
Когда есть несколько функций с одинаковым именем, но разными параметрами, говорят, что функции перегружены, поэтому это называется перегрузкой функций. Функции могут быть перегружены путем изменения количества аргументов и/или изменения типа аргументов . Проще говоря, это особенность объектно-ориентированного программирования, позволяющая многим функциям иметь одно и то же имя, но разные параметры, когда многочисленные задачи перечислены под одним именем функции. Существуют определенные правила перегрузки функций, которым следует следовать при перегрузке функции.
Ниже приведена программа C++, демонстрирующая перегрузку функций или полиморфизм времени компиляции:
Объяснение: В приведенном выше примере одна функция с именем function func() действует по-разному в трех разных ситуациях, что является свойством полиморфизма.
Чтобы узнать больше об этом, вы можете обратиться к статье — Перегрузка функций в C++.
B. Перегрузка оператора
C++ имеет возможность придавать операторам особое значение для типа данных, эта возможность известна как перегрузка операторов. Например, мы можем использовать оператор сложения (+) для строкового класса, чтобы объединить две строки. Мы знаем, что задача этого оператора — добавить два операнда. Таким образом, один оператор '+', помещенный между целочисленными операндами, добавляет их, а когда помещается между строковыми операндами, объединяет их.
Ниже приведена программа C++ для демонстрации перегрузки операторов:
Объяснение: В приведенном выше примере оператор '+' перегружен. Обычно этот оператор используется для сложения двух чисел (целых или чисел с плавающей запятой), но здесь оператор предназначен для сложения двух мнимых или комплексных чисел.
Чтобы узнать больше об этом, обратитесь к статье — Перегрузка оператора.
2. Полиморфизм во время выполнения
Этот тип полиморфизма достигается переопределением функций . Позднее связывание и динамический полиморфизм — это другие названия полиморфизма времени выполнения. Вызов функции разрешается во время выполнения с помощью полиморфизма времени выполнения. Напротив, при полиморфизме времени компиляции компилятор определяет вызов функции для привязки к объекту после его вывода во время выполнения.
A. Переопределение функции
Переопределение функций происходит, когда производный класс имеет определение для одной из функций-членов базового класса. Говорят, что эта базовая функция переопределена.
Ниже приведена программа C++ для демонстрации переопределения функций:
Виртуальная функция
Виртуальная функция — это функция-член, объявленная в базовом классе с использованием ключевого слова virtual и переопределенная (переопределенная) в производном классе.
Некоторые ключевые моменты о виртуальных функциях:
- Виртуальные функции являются динамическими по своей природе.
- Они определяются путем вставки ключевого слова « виртуальный » внутри базового класса и всегда объявляются вместе с базовым классом и переопределяются в дочернем классе.
- Виртуальная функция вызывается во время выполнения
Ниже приведена программа C++ для демонстрации виртуальной функции:
Эта статья предоставлена Харшем Агарвалом . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью write.geeksforgeeks.org или отправить ее по адресу review-team@geeksforgeeks.org. Посмотрите, как ваша статья появится на главной странице GeeksforGeeks, и помогите другим гикам. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или если вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.