Úvod do virtuálneho kľúčového slova v jazyku C ++

Virtuálne kľúčové slovo v C ++ sa používa na vytvorenie virtuálnej funkcie v C ++. Virtuálna funkcia je funkcia nadradenej triedy, ktorú chceme predefinovať v podradenej triede. Virtuálna funkcia sa deklaruje pomocou kľúčového slova virtual. Keď definujeme virtuálnu funkciu, kľúčové slovo virtual má pokračovať vo vyhlásení funkcie. Virtuálne kľúčové slovo hovorí kompilátoru, aby vo funkcii vykonal oneskorené väzby alebo dynamické prepojenie.

Jeden ukazovateľ sa vyžaduje na označenie všetkých objektov rôznych tried. Preto je ukazovateľ vytvorený na nadtriede, aby odkazoval na všetky objekty odvodenej triedy, a potom ukazovateľ nadtriedy obsahuje adresu objektu odvodenej triedy, pričom vždy funguje funkcia nadtriedy. Na vyriešenie tohto problému používame virtuálnu funkciu. Takže, keď je virtuálna funkcia vytvorená v nadtriede, kompilátor C ++ identifikuje, ktorá funkcia sa má vykonať v čase spustenia a identifikácia funkcie vychádza z typu objektu, ktorý ukazuje ukazovateľ nadtriedy.

Virtuálna funkcia

Virtuálne funkcie syntaxe sú uvedené nižšie:

syntax

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

Rovnako ako v syntaxi, fun () deklaruje virtuálne kľúčové slovo, čo znamená, že podradená trieda môže predefinovať rovnaké metódy.

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

Výkon:

Vo vyššie uvedenom programe nadtrieda A, ktorá má funkciu disp (), ktorá je prepísaná v odvodenej triede B. Metóda disp () v hlavnej funkcii volá objekt obj1 (čo je dynamická väzba alebo oneskorená väzba. Dynamická väzba je proces, v ktorom sa vykonáva konkrétna funkcia, ktorá sa má vykonať, v čase vykonávania) a funkcia disp () triedy 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
)

Výkon:

Vyššie uvedený programový kód predstavuje zmenu programu 1, funkcia disp () je definovaná kľúčovým slovom virtual a teraz, keď je vykonaný obj1, ktorý volá funkciu disp (), je vykonaná funkcia disp () podradenej triedy B.

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

Výkon:

Vyššie uvedený programový kód predstavuje zmenu programu 2, funkcie disp (), ktorá je tiež nanovo definovaná pomocou kľúčového slova virtual v triede B a teraz, keď obj1, ktorý volá funkciu disp (), funkcia disp () podradenej triedy B je vykonaný.

Ďalej píšeme program pre čisto virtuálnu funkciu. Čistá virtuálna funkcia je funkcia, pre ktorú nemali implementácie. Čistá virtuálna funkcia sa tiež nazýva abstraktná virtuálna funkcia. Čisté vyhlásenie virtuálnej funkcie priradí 0, ako je uvedené v nižšie uvedenom kóde -

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
)

Výkon:

Výhody virtuálneho kľúčového slova v C ++

  • Virtuálne funkcie sa používajú na dosiahnutie runtime polymorfizmu.
  • Ak je trieda odvodená od triedy, ktorá má virtuálnu funkciu, potom je možné definíciu funkcie v odvodenej triede predefinovať.

Pravidlá virtuálneho kľúčového slova v C ++

  • Kľúčové slovo Virtual v jazyku C ++ sa používa vo funkčnom vyhlásení.
  • Virtuálne funkcie musia byť členmi triedy.
  • Virtuálna funkcia prístupná pomocou ukazovateľov objektov.
  • Virtuálnu funkciu nie je možné deklarovať ako statickú.
  • Virtuálnou funkciou môžu byť priatelia z inej triedy.
  • Pokiaľ sa virtuálna funkcia v nadtriede nepoužíva, potom ju môžeme definovať aj v nadtriede.
  • Podpis virtuálnej funkcie nadtriedy a podriadených tried by mal byť rovnaký, takzvaný ako potlačenie funkcie, inak, ak sa dve funkcie s rovnakým menom, ale odlišným podpisom, v C ++ považujú za preťažené funkcie.
  • Môžeme mať virtuálneho deštruktora, ale nemáme virtuálneho konštruktora.

záver

  • Virtuálne kľúčové slovo v C ++ sa používa na vytvorenie virtuálnej funkcie v C ++.
  • Virtuálna funkcia je funkcia nadradenej triedy, ktorú chceme predefinovať v podradenej triede.
  • Jeden ukazovateľ sa vyžaduje na označenie všetkých objektov rôznych tried.
  • Ukazovateľ nadtriedy obsahuje adresu objektu odvodenej triedy vždy spustenú funkciu nadtriedy.
  • Virtuálne funkcie musia byť členmi triedy, musia byť členmi triedy, nemôžu byť deklarované ako statické, prístupné prostredníctvom ukazovateľov objektov.
  • Podpis virtuálnej funkcie nadtriedy a podriadených tried by mal byť rovnaký, takzvaný ako potlačenie funkcie, inak, ak sa dve funkcie s rovnakým menom, ale odlišným podpisom, v C ++ považujú za preťažené funkcie.

Odporúčané články

Toto je sprievodca po virtuálnom kľúčovom slove v jazyku C ++. Tu diskutujeme o úvode a výhodách virtuálneho kľúčového slova v C ++ spolu s jeho syntaxou virtuálnej funkcie. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. Prepísanie metódy v jazyku C #
  2. Dedičnosť v C #
  3. C # Príkazy
  4. Príkazy Java
  5. Prevláda v Jave
  6. Polymorfizmus v Jave
  7. Prvých 11 funkcií a výhod C ++

Kategórie: