C ++

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

Віртуальна функція C ++
У цій статті ми будемо обговорювати віртуальну функцію на мові програмування С ++. У C ++ використовується віртуальна функція для досягнення поліморфізму виконання / динаміки. Ми побачимо кілька прикладів, щоб зрозуміти концепцію віртуальної функції в C++.

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

Давайте подивимося кілька прикладів для розуміння поняття віртуальної функції.

У першому прикладі ми побачимо поведінку невіртуальної функції, а потім у другому прикладі пояснимо поведінку віртуальної функції.

Приклад 1

У наступному прикладі коду ми маємо два класи: базовий клас і похідний клас.

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

Потім ми оголосили вказівник на тип базового класу і призначили об'єкт похідного класу. Отже, коли ми викликаємо функцію display () за допомогою покажчика типу базового класу, буде викликана функція базового класу. Ви можете побачити результати нижче.

Але в таких випадках C ++ надає спосіб викликати похідну функцію класу, оголошуючи функцію базового класу як віртуальну. Ми побачимо ще один приклад, щоб це зрозуміти.

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

публічний:
відображення порожнечі ()

кут << "I am in Base class" << endl;

;
клас Derived_Class: public Base_Class

публічний:
відображення порожнечі ()

кут << "I am in Derived class" повернути 0;

Приклад 2

У цьому прикладі ми визначили функцію display () як віртуальну функцію в базовому класі. Єдина відмінність від попередньої програми полягає в тому, що ми додали віртуальне ключове слово перед “void display ()” в базовому класі.

Тепер, якщо ви бачите вихідні дані, виводиться надпис "Я перебуваю у похідному класі", що вказує на те, що похідна функція класу викликається.

Віртуальне ключове слово (віртуальна функція) у базовому класі відповідає за те, щоб для об’єкта була викликана правильна функція.

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

публічний:
віртуальне відображення порожнечі ()

кут << "I am in Base class" << endl;

;
клас Derived_Class: public Base_Class

публічний:
відображення порожнечі ()

кут << "I am in Derived class" повернути 0;

Приклад 3

Це ще один приклад віртуальної функції. Як ви можете бачити в програмі нижче, ми визначили базовий клас, тобто.e., Тварина. Існує два похідних класи: собака та корова. Ми визначили функцію eat () як віртуальну в базовому класі, тобто.e., Тварина. Потім ми перевизначили функцію eat () в обох похідних класах, Dog і Cow.  У функції main () ми маємо покажчик базового класу, тобто.e., Тварина, а потім приєднали похідний клас, собака. Отже, коли ми викликаємо функцію eat () за допомогою вказівника базового класу, ми можемо викликати похідну версію класу функції eat (), i.e., функція eat () із класу Dog. Подібним чином, коли ми приєднуємо об'єкт класу Cow, ми можемо викликати похідну версію класу функції eat (), i.e., функція eat () із класу Cow. Ви можете чітко побачити таку поведінку у вихідних даних нижче. 

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

публічний:
віртуальна порожнеча eat ()

кут << "Animal - base class - undefined eating behavior." << endl;

;
клас Собака: громадська Тварина

публічний:
порожнеча їсти ()

кут << "Dog - eat non-veg!" << endl;

;
клас Корова: громадська Тварина

публічний:
порожнеча їсти ()

кут << "Cow - eat veg!" a_ptr = нова корова ();
a_ptr-> eat ();
повернути 0;

Висновок

У цій статті я пояснив поняття віртуальної функції в C++. C ++ підтримує різні типи поліморфізму - статичний і динамічний поліморфізм. За допомогою віртуальної функції ми можемо досягти середовища виконання / динамічного поліморфізму. У цій статті ми розглянули лише поняття віртуальної функції та способи досягнення поліморфізму виконання. Я пояснив три робочі приклади для пояснення віртуальних функцій.

Підручник Тінь розкрадача гробниць для Linux
Shadow of the Tomb Raider - дванадцяте доповнення до серії Tomb Raider - франшизи екшн-пригодницької гри, створеної Eidos Montreal. Гру сприйняли як к...
Як збільшити FPS в Linux?
FPS означає Кадри в секунду. Завданням FPS є вимірювання частоти кадрів при відтворенні відео або ігрових виставах. Простими словами кількість безпере...
Найкращі лабораторні ігри Oculus App
Якщо ви є власником гарнітури Oculus, то вам потрібно дізнатися про бокове завантаження. Бокове завантаження - це процес встановлення негарнітного вмі...