C ++

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

Виртуальная функция C ++
В этой статье мы собираемся обсудить виртуальную функцию на языке программирования C ++. Виртуальная функция используется в C ++ для достижения динамического полиморфизма времени выполнения. Мы увидим несколько примеров, чтобы понять концепцию виртуальной функции в C++.

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

Давайте посмотрим на несколько примеров, чтобы понять концепцию виртуальной функции.

В первом примере мы увидим поведение невиртуальной функции, а затем во втором примере мы объясним поведение виртуальной функции.

Пример 1

В следующем примере кода у нас есть два класса: базовый класс и производный класс.

Базовый класс имеет функцию-член i.е., отображать(). Производный класс унаследован от базового класса и переопределил функцию display ().

Затем мы объявили указатель на тип базового класса и назначили объект производного класса. Итак, когда мы вызываем функцию display () с использованием указателя типа базового класса, будет вызываться функция базового класса. Вы можете увидеть результат ниже.

Но в таких случаях C ++ предоставляет способ вызова функции производного класса, объявляя функцию базового класса как виртуальную. Мы увидим еще один пример, чтобы понять это.

#включать
используя пространство имен std;
класс Base_Class

общественность:
пустой дисплей ()

cout << "I am in Base class" << endl;

;
класс Derived_Class: общедоступный Base_Class

общественность:
пустой дисплей ()

cout << "I am in Derived class" возврат 0;

Пример 2

В этом примере мы определили функцию display () как виртуальную функцию в базовом классе. Единственное отличие от предыдущей программы в том, что мы добавили ключевое слово virtual перед «void display ()» в базовом классе.

Теперь, если вы видите результат, он печатает: «Я в производном классе», что указывает на то, что вызывается функция производного класса.

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

#включать
используя пространство имен std;
класс Base_Class

общественность:
виртуальный пустой дисплей ()

cout << "I am in Base class" << endl;

;
класс Derived_Class: общедоступный Base_Class

общественность:
пустой дисплей ()

cout << "I am in Derived class" возврат 0;

Пример 3

Это еще один пример виртуальной функции. Как вы можете видеть в приведенной ниже программе, мы определили базовый класс i.е., Животное. Есть два производных класса: Dog и Cow. Мы определили функцию eat () как виртуальную в базовом классе, i.е., Животное. Затем мы переопределили функцию eat () в обоих производных классах Dog и Cow.  В функции main () у нас есть указатель на базовый класс i.е., Animal, а затем прикрепил производный класс Dog. Итак, когда мы вызываем функцию eat () с помощью указателя базового класса, мы можем вызвать версию производного класса функции eat (), i.е., функция eat () из класса Dog. Точно так же, когда мы присоединяем объект класса Cow, мы можем затем вызвать версию производного класса функции eat (), i.е., функция eat () из класса Cow. Вы можете ясно увидеть это поведение в выводе ниже. 

#включать
используя пространство имен std;
класс Animal

общественность:
виртуальная пустота есть ()

cout << "Animal - base class - undefined eating behavior." << endl;

;
класс Dog: public Animal

общественность:
пусто есть ()

cout << "Dog - eat non-veg!" << endl;

;
класс Cow: public Animal

общественность:
пусто есть ()

cout << "Cow - eat veg!" a_ptr = новая корова ();
a_ptr-> есть ();
возврат 0;

Заключение

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

Левая кнопка мыши не работает в Windows 10
Если вы используете выделенную мышь со своим ноутбуком или настольным компьютером, но левая кнопка мыши не работает в Windows 10/8/7 по какой-то причи...
Курсор прыгает или перемещается случайным образом при наборе текста в Windows 10
Если вы обнаружите, что ваш курсор мыши прыгает или перемещается сам по себе, автоматически, случайным образом при вводе текста на ноутбуке или компью...
Как изменить направление прокрутки мыши и сенсорной панели в Windows 10
Мышь а также Сенсорная панельs не только упрощают вычисления, но и делают их более эффективными и требуют меньше времени. Мы не можем представить себе...