Полиморфизм С++

Опубликовано: 11 Января, 2023

Слово «полиморфизм» означает наличие множества форм. Проще говоря, мы можем определить полиморфизм как способность сообщения отображаться более чем в одной форме.
Реальным примером полиморфизма является человек, который одновременно может иметь разные характеристики. Мужчина одновременно и отец, и муж, и работник. Таким образом, один и тот же человек в разных ситуациях ведет себя по-разному. Это называется полиморфизмом. Полиморфизм считается одной из важных особенностей объектно-ориентированного программирования.

Типы полиморфизма

  • Полиморфизм времени компиляции.
  • Полиморфизм времени выполнения.

1. Полиморфизм времени компиляции

Этот тип полиморфизма достигается перегрузкой функций или перегрузкой операторов.

A. Перегрузка функций

Когда есть несколько функций с одинаковым именем, но разными параметрами, говорят, что функции перегружены, поэтому это называется перегрузкой функций. Функции могут быть перегружены путем изменения количества аргументов и/или изменения типа аргументов . Проще говоря, это особенность объектно-ориентированного программирования, позволяющая многим функциям иметь одно и то же имя, но разные параметры, когда многочисленные задачи перечислены под одним именем функции. Существуют определенные правила перегрузки функций, которым следует следовать при перегрузке функции.

Ниже приведена программа C++, демонстрирующая перегрузку функций или полиморфизм времени компиляции:

Объяснение: В приведенном выше примере одна функция с именем function func() действует по-разному в трех разных ситуациях, что является свойством полиморфизма.
Чтобы узнать больше об этом, вы можете обратиться к статье — Перегрузка функций в C++.

B. Перегрузка оператора

C++ имеет возможность придавать операторам особое значение для типа данных, эта возможность известна как перегрузка операторов. Например, мы можем использовать оператор сложения (+) для строкового класса, чтобы объединить две строки. Мы знаем, что задача этого оператора — добавить два операнда. Таким образом, один оператор '+', помещенный между целочисленными операндами, добавляет их, а когда помещается между строковыми операндами, объединяет их.

Ниже приведена программа C++ для демонстрации перегрузки операторов:

Объяснение: В приведенном выше примере оператор '+' перегружен. Обычно этот оператор используется для сложения двух чисел (целых или чисел с плавающей запятой), но здесь оператор предназначен для сложения двух мнимых или комплексных чисел.
Чтобы узнать больше об этом, обратитесь к статье — Перегрузка оператора.

2. Полиморфизм во время выполнения

Этот тип полиморфизма достигается переопределением функций . Позднее связывание и динамический полиморфизм — это другие названия полиморфизма времени выполнения. Вызов функции разрешается во время выполнения с помощью полиморфизма времени выполнения. Напротив, при полиморфизме времени компиляции компилятор определяет вызов функции для привязки к объекту после его вывода во время выполнения.

A. Переопределение функции

Переопределение функций происходит, когда производный класс имеет определение для одной из функций-членов базового класса. Говорят, что эта базовая функция переопределена.

Ниже приведена программа C++ для демонстрации переопределения функций:

Виртуальная функция

Виртуальная функция — это функция-член, объявленная в базовом классе с использованием ключевого слова virtual и переопределенная (переопределенная) в производном классе.

Некоторые ключевые моменты о виртуальных функциях:

  • Виртуальные функции являются динамическими по своей природе.
  • Они определяются путем вставки ключевого слова « виртуальный » внутри базового класса и всегда объявляются вместе с базовым классом и переопределяются в дочернем классе.
  • Виртуальная функция вызывается во время выполнения

Ниже приведена программа C++ для демонстрации виртуальной функции:

Эта статья предоставлена Харшем Агарвалом . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью write.geeksforgeeks.org или отправить ее по адресу review-team@geeksforgeeks.org. Посмотрите, как ваша статья появится на главной странице GeeksforGeeks, и помогите другим гикам. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или если вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.

C++