Wprowadzenie do wirtualnego słowa kluczowego w C ++

Wirtualne słowo kluczowe w C ++ służy do tworzenia funkcji wirtualnej w C ++. Funkcja wirtualna jest funkcją klasy nadrzędnej, którą chcemy przedefiniować w klasie potomnej. Funkcja wirtualna jest deklarowana za pomocą słowa kluczowego virtual. Kiedy definiujemy funkcję wirtualną, słowo kluczowe virtual ma być kontynuowane w deklaracji funkcji. Wirtualne słowo kluczowe informuje kompilator, aby wykonał późne wiązanie lub dynamiczne połączenie dla funkcji.

Pojedynczy wskaźnik jest wymagany, aby odnosić się do wszystkich obiektów różnych klas. Dlatego wskaźnik nadklasy jest tworzony w taki sposób, aby odwoływał się do wszystkich obiektów klasy pochodnej, a następnie wskaźnik nadklasy zawiera adres obiektu klasy pochodnej i zawsze uruchamia funkcję nadklasy. Aby rozwiązać ten problem, korzystamy z funkcji wirtualnej. Tak więc, gdy funkcja wirtualna jest tworzona w nadklasie, kompilator C ++ identyfikuje, która funkcja ma zostać wykonana w czasie wykonywania, a identyfikacja funkcji odbywa się na podstawie typu obiektu wskazywanego przez wskaźnik nadklasy.

Funkcja wirtualna

Funkcje wirtualne składni podano poniżej:

Składnia

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

Podobnie jak w składni, fun () deklaruje za pomocą wirtualnego słowa kluczowego, co oznacza, że ​​klasa potomna może przedefiniować te same metody.

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
)

Wynik:

W powyższym programie nadklasa A posiadająca funkcję disp (), która jest przepisywana w klasie pochodnej B. W głównej funkcji metoda disp () wywołuje obiekt obj1 (który jest powiązaniem dynamicznym lub późnym). jest procesem, w którym wykonywana jest konkretna funkcja do wykonania w czasie wykonywania) i wykonywana jest funkcja disp () klasy 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
)

Wynik:

Powyższy kod programu jest modyfikacją programu 1, funkcja disp () jest zdefiniowana za pomocą słowa kluczowego virtual, a teraz, gdy obj1 wywołuje funkcję disp (), wykonywana jest funkcja disp () klasy potomnej 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
)

Wynik:

Powyższy kod programu jest modyfikacją programu 2, funkcji disp (), która również redefiniuje słowo kluczowe virtual w klasie B, a teraz, gdy obj1 wywołuje funkcję disp (), funkcję disp () klasy potomnej B jest wykonywany.

Następnie piszemy program dla funkcji czysto wirtualnej. Czysta funkcja wirtualna to funkcja, dla której don nie miał implementacji. Funkcja czysto wirtualna nazywana jest również abstrakcyjną funkcją wirtualną. Deklaracja czystej funkcji wirtualnej przypisuje 0, jak pokazano w poniższym kodzie -

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
)

Wynik:

Zalety wirtualnego słowa kluczowego w C ++

  • Funkcje wirtualne służą do osiągania polimorfizmu środowiska uruchomieniowego.
  • Jeśli klasa pochodzi od klasy mającej funkcję wirtualną, wówczas definicję funkcji można przedefiniować w klasie pochodnej.

Zasady wirtualnego słowa kluczowego w C ++

  • Słowo kluczowe Virtual w C ++ używa się w deklaracji funkcji.
  • Funkcje wirtualne muszą być członkami klasy.
  • Funkcja wirtualna dostępna za pośrednictwem wskaźników obiektów.
  • Funkcja wirtualna nie może być zadeklarowana jako statyczna.
  • Funkcja wirtualna może być przyjaciółmi z innej klasy.
  • Jeśli funkcja wirtualna nie jest używana w nadklasie, wówczas również możemy ją zdefiniować w nadklasie.
  • Podpis funkcji wirtualnej nadklasy i klas potomnych powinien być taki sam, tak zwany jako nadpisywanie funkcji, w przeciwnym razie, jeśli dwie funkcje o tej samej nazwie, ale o innej sygnaturze, w C ++ są traktowane jako funkcje przeciążone.
  • Możemy mieć wirtualny destruktor, ale nie mieć wirtualnego konstruktora.

Wniosek

  • Wirtualne słowo kluczowe w C ++ służy do tworzenia funkcji wirtualnej w C ++.
  • Funkcja wirtualna jest funkcją klasy nadrzędnej, którą chcemy przedefiniować w klasie potomnej.
  • Pojedynczy wskaźnik jest wymagany, aby odnosić się do wszystkich obiektów różnych klas.
  • Wskaźnik nadklasy zawiera adres obiektu klasy pochodnej i zawsze uruchamia funkcję nadklasy.
  • Funkcje wirtualne muszą być członkami klasy, muszą być członkami klasy, nie mogą być zadeklarowane jako statyczne, dostępne za pośrednictwem wskaźników obiektów.
  • Podpis funkcji wirtualnej nadklasy i klas potomnych powinien być taki sam, tak zwany jako przesłanianie funkcji, w przeciwnym razie, jeśli dwie funkcje o tej samej nazwie, ale o innej sygnaturze, w C ++ są traktowane jako funkcje przeciążone.

Polecane artykuły

To jest przewodnik po wirtualnym słowie kluczowym w C ++. Tutaj omawiamy wprowadzenie i zalety słowa kluczowego Virtual w C ++ wraz z jego składnią funkcji wirtualnej. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Przesłanianie metod w języku C #
  2. Dziedziczenie w C #
  3. Komendy C #
  4. Polecenia Java
  5. Przesłanianie w Javie
  6. Polimorfizm w Javie
  7. 11 najważniejszych funkcji i zalet C ++