Uvod u virtualnu ključnu riječ na C ++

Virtualna ključna riječ u C ++ koristi se za stvaranje virtualne funkcije u jeziku C ++. Virtualna funkcija je funkcija roditeljske klase koju želimo redefinirati u podređenoj klasi. Virtualna funkcija deklarirana je pomoću ključne riječi virtualna. Kad definiramo virtualnu funkciju, ključna riječ virtualna nastavlja se u deklaraciji funkcije. Virtualna ključna riječ kaže prevoditelju da vrši kasno uvezivanje ili dinamičku povezanost u funkciji.

Pojedini pokazivač potreban je za upućivanje na sve objekte različitih klasa. Stoga se pointer kreira na nadklasi kako bi uputio sve objekte izvedene klase, a zatim pokazivač nadklase sadrži adresu objekta izvedene klase uvijek izvodeći funkciju nadklase. Dakle, da bismo to riješili, koristimo virtualnu funkciju. Dakle, kada se stvori virtualna funkcija u superklasi, tada C ++ kompajler identificira koja se funkcija treba izvršiti u vrijeme izvršavanja i identifikacija funkcije uzima na temelju vrste objekta koji pokazuje pokazivač superklase.

Virtualna funkcija

Virtualne funkcije sintakse date su u nastavku:

Sintaksa

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

Kao i u sintaksi, fun () izjavljuje virtualnu ključnu riječ, što znači da podređena klasa može redefinirati iste metode.

1. program:

#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
)

Izlaz:

U gornjem programu superrazred A koji ima funkciju disp (), koja se prepisuje u izvedenu klasu B. U glavnoj funkciji metoda disp () poziva objekt obj1 (koji je dinamičko vezanje ili kasno vezanje. Dinamičko vezivanje je proces u kojem se određuje određena funkcija koju treba izvršiti u vrijeme pokretanja i izvršava se disp () funkcija klase A.

Program 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
)

Izlaz:

Gornji programski kôd je promjena programa 1, funkcija disp () je definirana ključnom riječi virtualna, a sada kada se obj1 koji poziva funkciju disp (), izvršava se funkcija disp () dječje klase B.

3. program:

#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
)

Izlaz:

Gornji programski kôd je promjena programa 2, funkcije disp () koja se također redefinira ključnom riječju virtualne u klasi B, a sada kada obj1 koja zove funkciju disp (), funkcija disp () dječje klase B se izvršava.

Zatim pišemo program za čistu virtualnu funkciju. Čista virtualna funkcija je funkcija za koju don nije imao implementacije. Čista virtualna funkcija naziva se i apstraktna virtualna funkcija. Čista deklaracija virtualne funkcije dodjeljuje 0, kao što je prikazano u donjem kôdu -

Program 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
)

Izlaz:

Prednosti virtualne ključne riječi u jeziku C ++

  • Virtualne funkcije koriste se za postizanje polimorfizma vremena izvođenja.
  • Ako je klasa izvedena iz klase koja ima virtualnu funkciju, tada se definicija funkcije može redefinirati u izvedenoj klasi.

Pravila virtualne ključne riječi u jeziku C ++

  • Virtualna ključna riječ u C ++ koristi se u deklaraciji funkcija.
  • Virtualne funkcije moraju biti članovi klase.
  • Virtualnoj funkciji pristupa se putem objektnih pokazivača.
  • Virtualna funkcija se ne može proglasiti statičkom.
  • Virtualna funkcija može biti prijatelj iz druge klase.
  • Ako se virtualna funkcija ne koristi u superklasi, tada je možemo definirati i u superklasi.
  • Potpis virtualne funkcije pretklasa i dječje klase trebao bi biti isti, takozvana kao prevladavanje funkcije, inače ako se dvije funkcije s istim nazivom, ali različitog potpisa, smatraju se preopterećenim funkcijama u C ++.
  • Možemo imati virtualnog destruktora, ali ne i virtualnog konstruktora.

Zaključak

  • Virtualna ključna riječ u C ++ koristi se za stvaranje virtualne funkcije u jeziku C ++.
  • Virtualna funkcija je funkcija roditeljske klase koju želimo redefinirati u podređenoj klasi.
  • Pojedini pokazivač potreban je za upućivanje na sve objekte različitih klasa.
  • Pokazivač nadklase sadrži adresu objekta izvedenog razreda koji uvijek izvodi funkciju superklasa.
  • Virtualne funkcije moraju biti članovi klase, moraju biti članovi klase, ne mogu se deklarirati kao statične, kojima se može pristupiti putem pokazivača objekta.
  • Potpis virtualne funkcije pretklasa i dječje klase trebao bi biti isti, takozvana kao prevladavanje funkcije, inače ako se dvije funkcije s istim nazivom, ali različitog potpisa, smatraju se preopterećenim funkcijama u C ++.

Preporučeni članci

Ovo je vodič za virtualnu ključnu riječ na C ++. Ovdje raspravljamo o Uvodu i prednostima virtualne ključne riječi u jeziku C ++, zajedno sa sintaksom virtualne funkcije. Možete i proći naše druge predložene članke da biste saznali više -

  1. Poništavanje metode u C #
  2. Nasljeđivanje u C #
  3. C # naredbe
  4. Java naredbe
  5. Prevladavanje u Javi
  6. Polimorfizam u Javi
  7. Top 11 značajki i prednosti C ++

Kategorija: