C ++

Funcția virtuală C ++

Funcția virtuală C ++
În acest articol, vom discuta despre funcția virtuală în limbajul de programare C ++. O funcție virtuală este utilizată în C ++ pentru a realiza runtime / polimorfismul dinamic. Vom vedea mai multe exemple pentru a înțelege conceptul funcției virtuale în C++.

O funcție virtuală este o funcție membru care este definită în clasa de bază / clasa părinte și redefinită în clasa derivată. Funcția virtuală permite apelarea versiunii clasei derivate a funcției folosind referința sau indicatorul către clasa de bază.

Să vedem câteva exemple pentru a înțelege conceptul de funcție virtuală.

În primul exemplu, vom vedea comportamentul funcției non-virtuale, iar apoi în al doilea exemplu, vom explica comportamentul unei funcții virtuale.

Exemplul 1

În următorul exemplu de cod, avem două clase: clasa de bază și clasa derivată.

Clasa de bază are o funcție de membru, i.e., afişa(). Clasa derivată este moștenită din clasa de bază și redefinită funcția display ().

Apoi, am declarat un pointer tipului clasei de bază și i-am atribuit un obiect al clasei derivate. Deci, când apelăm funcția display () utilizând pointerul de tip clasă de bază, funcția de clasă de bază va fi apelată. Puteți vedea rezultatul de mai jos.

Dar, în astfel de cazuri, C ++ oferă o modalitate de a apela funcția de clasă derivată declarând funcția de clasă de bază ca virtuală. Vom vedea un alt exemplu pentru a înțelege acest lucru.

#include
folosind spațiul de nume std;
clasa Base_Class

public:
afișare nulă ()

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

;
clasa Derived_Class: public Base_Class

public:
afișare nulă ()

cout << "I am in Derived class" retur 0;

Exemplul 2

În acest exemplu, am definit funcția display () ca o funcție virtuală în clasa de bază. Singura diferență față de programul anterior este că am adăugat un cuvânt cheie virtual în fața „void display ()” în clasa de bază.

Acum, dacă vedeți rezultatul, acesta imprimă „Sunt în clasa derivată”, ceea ce indică faptul că funcția de clasă derivată este numită.

Cuvântul cheie virtual (funcția virtuală) din clasa de bază este responsabil pentru a se asigura că funcția potrivită este apelată pentru un obiect.

#include
folosind spațiul de nume std;
clasa Base_Class

public:
afișare virtuală nulă ()

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

;
clasa Derived_Class: public Base_Class

public:
afișare nulă ()

cout << "I am in Derived class" retur 0;

Exemplul 3

Acesta este un alt exemplu de funcție virtuală. După cum puteți vedea în programul de mai jos, am definit o clasă de bază, i.e., Animal. Există două clase derivate: câine și vacă. Am definit funcția eat () ca virtuală în clasa de bază, i.e., Animal. Am redefinit apoi funcția eat () în ambele clase derivate, Dog și Cow.  În funcția main (), avem un indicator al clasei de bază, i.e., Animal, apoi a atașat clasa derivată, Dog. Deci, când apelăm funcția eat () folosind pointerul clasei de bază, putem invoca versiunea clasă derivată a funcției eat (), i.e., funcția eat () din clasa Dog. În mod similar, atunci când atașăm obiectul de clasă Cow, putem invoca apoi versiunea de clasă derivată a funcției eat (), i.e., funcția eat () din clasa Cow. Puteți vedea clar acest comportament în rezultatul de mai jos. 

#include
folosind spațiul de nume std;
clasa Animal

public:
gol nul virtual ()

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

;
clasă Câine: Animal public

public:
void eat ()

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

;
clasa Vaca: Animal public

public:
void eat ()

cout << "Cow - eat veg!" a_ptr = vacă nouă ();
a_ptr-> eat ();
retur 0;

Concluzie

În acest articol, am explicat conceptul de funcție virtuală în C++. C ++ acceptă diferite tipuri de polimorfism - polimorfism static și polimorfism dinamic. Cu ajutorul unei funcții virtuale, putem realiza polimorfismul runtime / dinamic. În acest articol, ne-am uitat doar la conceptul de funcție virtuală și la modul de realizare a polimorfismului în timpul rulării. Am explicat trei exemple de lucru pentru a explica funcția virtuală.

Cum se mărește FPS în Linux?
FPS înseamnă Cadre pe secundă. Sarcina FPS este de a măsura rata de cadre în redările video sau în performanțele jocului. În cuvinte simple, numărul d...
Cele mai bune jocuri Oculus App Lab
Dacă sunteți proprietarul căștilor Oculus, atunci trebuie să fiți informați despre încărcarea laterală. Încărcarea laterală este procesul de instalare...
Top 10 jocuri de jucat pe Ubuntu
Platforma Windows a fost una dintre platformele dominante pentru jocuri din cauza procentului imens de jocuri care se dezvoltă astăzi pentru a sprijin...