Introducere în cuvântul cheie virtual în C ++

Un cuvânt cheie virtual în C ++ este utilizat pentru a crea o funcție virtuală în C ++. Funcția virtuală este funcția clasei părinte pe care dorim să o redefinim în clasa copil. Funcția virtuală este declarată folosind cuvântul cheie virtual. Când definim funcția virtuală, cuvântul cheie virtual va continua la declararea funcției. Cuvântul cheie virtual spune compilatorului să efectueze o legătură tardivă sau o legătură dinamică pe funcție.

Indicatorul unic trebuie să se refere la toate obiectele din clase diferite. Prin urmare, pointerul este creat pe superclasa pentru a face referire la toate obiectele clasei derivate și apoi indicatorul superclase conține adresa obiectului clasei derivate rulează întotdeauna funcția superclase. Deci, pentru a rezolva acest lucru, utilizăm funcția virtuală. Deci, când funcția virtuală este creată în superclasa, atunci compilatorul C ++ identifică ce funcție trebuie executată în timpul rulării și identificarea funcției are la bază tipul de obiect indicat de indicatorul superclasei.

Funcție virtuală

Funcțiile virtuale ale sintaxei sunt prezentate mai jos:

Sintaxă

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

Ca și în sintaxă, fun () declară prin cuvântul cheie virtual, ceea ce înseamnă că clasa copil poate redefini aceleași metode.

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

ieşire:

În programul de mai sus, superclasa A are funcția disp (), care se rescrie în clasa derivată B. În funcția principală, metoda disp () apelează la obiectul obj1 (care este o legare dinamică sau o legare tardivă. Legare dinamică este un proces în care, ce funcție specifică de executat este să se decidă la timpul de execuție) și funcția disp () din clasa A este executată.

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

ieşire:

Codul programului de mai sus este modificarea programului 1, funcția disp () este definită cu cuvântul cheie virtual și acum când obiect1 care apelează funcția disp (), funcția disp () a clasei B copil este executată.

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

ieşire:

Codul programului de mai sus este modificarea programului 2, funcția disp () care se redefinesc și cu cuvântul cheie virtual din clasa B și acum când obiect1 apelează funcția disp (), funcția disp () a clasei copil B este executat.

În continuare, scriem programul pentru funcția virtuală pură. Funcția virtuală pură este o funcție pentru care don nu a avut implementări. Funcția virtuală pură se numește și o funcție virtuală abstractă. Declarația funcției virtuale pure atribuie 0, așa cum se arată în codul de mai jos -

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

ieşire:

Avantajele cuvântului cheie virtual în C ++

  • Funcțiile virtuale sunt utilizate pentru a realiza polimorfismul în timpul rulării.
  • Dacă o clasă este derivată dintr-o clasă care are o funcție virtuală, atunci definiția funcției poate fi redefinită în clasa derivată.

Reguli de cuvinte cheie virtuale în C ++

  • Cuvântul cheie virtual în C ++ se utilizează în declarația de funcții.
  • Funcțiile virtuale trebuie să fie membri ai clasei.
  • Funcția virtuală accesată prin indicatoarele de obiecte.
  • Funcția virtuală nu poate fi declarată statică.
  • Funcția virtuală poate fi prieteni dintr-o altă clasă.
  • Dacă funcția virtuală nu este utilizată în superclasă, atunci o putem defini și în superclasă.
  • Semnătura unei funcții virtuale a superclasei și a claselor pentru copii ar trebui să fie aceeași, așa-numită ca funcție de peste, în caz contrar dacă cele două funcții cu același nume, dar semnătură diferită, este considerată funcțiile supraîncărcate în C ++.
  • Putem avea un destructor virtual, dar nu putem avea un constructor virtual.

Concluzie

  • Un cuvânt cheie virtual în C ++ este utilizat pentru a crea o funcție virtuală în C ++.
  • Funcția virtuală este funcția clasei părinte pe care dorim să o redefinim în clasa copil.
  • Indicatorul unic trebuie să se refere la toate obiectele din clase diferite.
  • Indicatorul superclase conține adresa obiectului clasei derivate rulează întotdeauna funcția superclase.
  • Funcțiile virtuale trebuie să fie membri de clasă, trebuie să fie membri de clasă, nu pot fi declarați statici, accesați prin indicatoarele de obiect.
  • Semnătura unei funcții virtuale a superclasei și a claselor pentru copii ar trebui să fie aceeași, așa-numita funcție care depășește, altfel dacă cele două funcții cu același nume, dar semnătură diferită, este considerată funcțiile supraîncărcate în C ++.

Articole recomandate

Acesta este un ghid al cuvântului cheie virtual în C ++. Aici discutăm Introducerea și Avantajele cuvântului cheie virtual în C ++ împreună cu sintaxa sa a funcției virtuale. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. Metoda de suprapunere în C #
  2. Moștenire în C #
  3. C # Comenzi
  4. Comenzi Java
  5. Suprasolicitare în Java
  6. Polimorfism în Java
  7. Top 11 caracteristici și avantaje ale C ++