C ++

C ++ virtualna funkcija

C ++ virtualna funkcija
U ovom ćemo članku razgovarati o virtualnoj funkciji u programskom jeziku C ++. Virtualna funkcija koristi se u C ++ za postizanje runtime / dinamičkog polimorfizma. Vidjet ćemo nekoliko primjera za razumijevanje koncepta virtualne funkcije u C-u++.

Virtualna funkcija je funkcija člana koja je definirana u osnovnoj klasi / roditeljskoj klasi i redefinirana u izvedenoj klasi. Virtualna funkcija omogućuje pozivanje izvedene verzije funkcije funkcije pomoću reference ili pokazivača na osnovnu klasu.

Pogledajmo nekoliko primjera za razumijevanje koncepta virtualne funkcije.

U prvom ćemo primjeru vidjeti ponašanje neviralne funkcije, a zatim ćemo u drugom primjeru objasniti ponašanje virtualne funkcije.

Primjer 1

U sljedećem primjeru koda imamo dvije klase: osnovnu klasu i izvedenu klasu.

Osnovna klasa ima funkciju člana, tj.e., prikaz(). Izvedena klasa nasljeđuje se od osnovne klase i redefinira funkciju display ().

Zatim smo proglasili pokazivač na tip osnovne klase i dodijelili objekt izvedene klase. Dakle, kada pozivamo funkciju display () pomoću pokazivača tipa osnovne klase, pozvat će se funkcija osnovne klase. Izlaz možete vidjeti u nastavku.

Ali, u takvim slučajevima, C ++ pruža način pozivanja izvedene funkcije klase deklariranjem funkcije osnovne klase kao virtualne. Vidjet ćemo još jedan primjer da to razumijemo.

#include
pomoću prostora imena std;
razred Base_Class

javnost:
prikaz praznine ()

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

;
razred Izvedeni_razred: javni Base_Class

javnost:
prikaz praznine ()

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

Primjer 2

U ovom smo primjeru definirali funkciju display () kao virtualnu funkciju u osnovnoj klasi. Jedina razlika u odnosu na prethodni program je ta što smo dodali virtualnu ključnu riječ ispred “void display ()” u osnovnu klasu.

Ako vidite izlaz, ispisuje se "Ja sam u izvedenoj klasi", što znači da se poziva izvedena funkcija klase.

Virtualna ključna riječ (virtualna funkcija) u osnovnoj klasi odgovorna je za osiguravanje pozivanja prave funkcije za objekt.

#include
pomoću prostora imena std;
razred Base_Class

javnost:
prikaz virtualne praznine ()

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

;
razred Izvedeni_razred: javni Base_Class

javnost:
prikaz praznine ()

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

Primjer 3

Ovo je još jedan primjer virtualne funkcije. Kao što možete vidjeti u donjem programu, definirali smo osnovnu klasu, tj.e., Životinja. Postoje dvije izvedene klase: pas i krava. Definirali smo funkciju eat () kao virtualnu u osnovnoj klasi, tj.e., Životinja. Zatim smo redefinirali funkciju eat () u obje izvedene klase, Pas i Krava.  U funkciji main () imamo pokazivač osnovne klase, tj.e., Životinja, a zatim pridružio izvedenu klasu Pas. Dakle, kada pozivamo funkciju jesti () pomoću pokazivača osnovne klase, možemo pozvati izvedenu izvedbu klase funkcije jesti (), i.e., funkcija eat () iz klase Dog. Slično tome, kada priložimo objekt klase Cow, tada možemo pozvati izvedenu izvedbu klase funkcije eat (), i.e., funkcija eat () iz klase Cow. To ponašanje možete jasno vidjeti u donjem izlazu. 

#include
pomoću prostora imena std;
razred Životinja

javnost:
virtualna praznina eat ()

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

;
razred Pas: javna Životinja

javnost:
poništi jesti ()

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

;
razred Krava: javna Životinja

javnost:
poništi jesti ()

cout << "Cow - eat veg!" a_ptr = nova krava ();
a_ptr-> eat ();
return 0;

Zaključak

U ovom sam članku objasnio koncept virtualne funkcije u jeziku C++. C ++ podržava različite vrste polimorfizama - statički polimorfizam i dinamički polimorfizam. Uz pomoć virtualne funkcije možemo postići vrijeme izvođenja / dinamički polimorfizam. U ovom smo članku samo pogledali pojam virtualne funkcije i kako postići polimorfizam vremena izvođenja. Objasnio sam tri radna primjera kako bih objasnio virtualnu funkciju.

OpenTTD vs Simutrans
Stvaranje vlastite simulacije prijevoza može biti zabavno, opuštajuće i izuzetno primamljivo. Zbog toga morate isprobati što više igara kako biste pro...
Vodič za OpenTTD
OpenTTD je jedna od najpopularnijih igara za poslovnu simulaciju. U ovoj igri morate stvoriti prekrasan prijevoznički posao. Međutim, počet ćete u poč...
SuperTuxKart za Linux
SuperTuxKart sjajan je naslov osmišljen kako bi vam besplatno pružio iskustvo Mario Kart na vašem Linux sustavu. Prilično je izazovno i zabavno igrati...