Вступ до віртуального ключового слова в C ++

Віртуальне ключове слово в C ++ використовується для створення віртуальної функції в C ++. Віртуальна функція - це функція батьківського класу, яку ми хочемо переглянути в дочірньому класі. Віртуальна функція оголошується за допомогою ключового слова virtual. Коли ми визначаємо віртуальну функцію, ключове слово віртуальна має продовжуватися в оголошенні функції. Віртуальне ключове слово повідомляє компілятору виконувати пізню прив'язку або динамічну зв'язок функції.

Єдиний вказівник необхідний для позначення всіх об'єктів різних класів. Тому вказівник створюється на надкласі для позначення всіх об'єктів похідного класу і тоді вказівник надкласового класу містить адресу об'єкта похідного класу завжди запускає функцію надкласу. Отже, для вирішення цього питання ми використовуємо віртуальну функцію. Отже, коли віртуальна функція створюється в надкласовому класі, тоді компілятор C ++ визначає, яку функцію слід виконати під час виконання, і ідентифікація функції приймається на основі типу об'єкта, що вказує вказівник надкласового класу.

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

Віртуальні функції синтаксису наведені нижче:

Синтаксис

class name_class
(
public :
virtual return fun(arg1, arg2, ..)
(
//code inside the function
)
)

Як і в синтаксисі, fun () оголошує віртуальне ключове слово, а це означає, що дочірній клас може переосмислити ті самі методи.

Програма 1:

#include
using namespace std;
class A
(
public:
void disp()
(
cout << " Message from the class A\n ";
)
);
class B :public A
(
public:
void disp()
(
cout << "Message from the class B\n";
)
);
int main()
(
A* obj1; // super class pointer
B obj2; // child class object
obj1 = &obj2;
obj1-> disp(); // Late Binding Occurs
)

Вихід:

У вищевказаній програмі надклас А, що має функцію disp (), яка перезаписується у похідний клас B. У головній функції метод disp () викликає об'єкт obj1 (який є динамічним зв'язуванням або пізнім зв'язуванням. Динамічне зв'язування це процес, в ході якого конкретна функція для виконання визначається під час виконання) та виконується функція disp () класу A.

Програма 2:

#include
using namespace std;
class A
(
public:
virtual void disp()
(
cout << " Message from the class A \n ";
)
);
class B :public A
(
public:
void disp()
(
cout << "Message from the class B\n";
)
);
int main()
(
A* obj1; // super class pointer
B obj2; // child class object
obj1 = &obj2;
obj1-> disp(); // Dynamic Binding Ocuurs
)

Вихід:

Вищевказаний програмний код є зміною програми 1, функція disp () визначається за допомогою ключового слова віртуальна, і тепер, коли obj1, що викликає функцію disp (), виконується функція disp () дочірнього класу B.

Програма 3:

#include
using namespace std;
class A
(
public:
virtual void disp()
(
cout << " Message from the class A\n ";
)
);
class B :public A
(
public:
virtual void disp()
(
cout << "Message from the class B\n";
)
);
int main()
(
A* obj1; // super class pointer
B obj2; // child class object
obj1 = &obj2;
obj1-> disp(); // Dynamic Binding Ocuurs
)

Вихід:

Вищевказаний програмний код - це зміна програми 2, функція disp (), яка також переосмислюється ключовим словом віртуальний у класі В, і тепер, коли obj1, що викликає функцію disp (), функцією disp () дочірнього класу B виконується.

Далі ми пишемо програму для чистої віртуальної функції. Чиста віртуальна функція - це функція, для якої дон не мав реалізацій. Чисту віртуальну функцію також називають абстрактною віртуальною функцією. У чистому оголошенні віртуальної функції призначається 0, як показано в коді нижче -

Програма 4:

#include
using namespace std;
class A
(
public:
virtual void disp()=0;
);
class B :public A
(
public:
void disp()
(
cout << "Message from the class B\n";
)
);
int main()
(
A* obj1; // super class pointer
B obj2; // child class object
obj1 = &obj2;
obj1-> disp(); // Dynamic Binding Ocuurs
)

Вихід:

Переваги віртуального ключового слова в C ++

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

Правила віртуального ключового слова в C ++

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

Висновок

  • Віртуальне ключове слово в C ++ використовується для створення віртуальної функції в C ++.
  • Віртуальна функція - це функція батьківського класу, яку ми хочемо переглянути в дочірньому класі.
  • Єдиний вказівник необхідний для позначення всіх об'єктів різних класів.
  • Покажчик надкласового класу містить адресу об'єкта похідного класу, який завжди виконує функцію надкласу.
  • Віртуальні функції повинні бути членами класу, повинні бути членами класу, не можуть бути оголошені статичними, доступ до яких здійснюється через об'єктні покажчики.
  • Підпис віртуальної функції надкласу та дочірніх класів повинен бути однаковим, так званим, як функція, що переосмислюється, інакше, якщо дві функції з однаковим іменем, але відрізняються підписом, вона розглядається як перевантажені функції в C ++.

Рекомендовані статті

Це посібник до віртуального ключового слова в C ++. Тут ми обговорюємо Вступ та переваги віртуального ключового слова в C ++ разом із його синтаксисом віртуальної функції. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

  1. Перевизначення методу в C #
  2. Спадщина в C #
  3. C # Команди
  4. Команди Java
  5. Перевагу в Java
  6. Поліморфізм на Яві
  7. Топ-11 особливостей та переваг C ++