C++

Virtuelle C++-Funktion

Virtuelle C++-Funktion
In diesem Artikel werden wir die virtuelle Funktion in der Programmiersprache C++ diskutieren. In C++ wird eine virtuelle Funktion verwendet, um den Laufzeit-/dynamischen Polymorphismus zu erreichen. Wir werden einige Beispiele sehen, um das Konzept der virtuellen Funktion in C . zu verstehen++.

Eine virtuelle Funktion ist eine Memberfunktion, die in der Basisklasse/Elternklasse definiert und in der abgeleiteten Klasse neu definiert wird. Die virtuelle Funktion ermöglicht den Aufruf der abgeleiteten Klassenversion der Funktion mithilfe der Referenz oder des Zeigers auf die Basisklasse.

Sehen wir uns ein paar Beispiele an, um das Konzept der virtuellen Funktion zu verstehen.

Im ersten Beispiel sehen wir das Verhalten der nicht-virtuellen Funktion und im zweiten Beispiel erklären wir das Verhalten einer virtuellen Funktion explain.

Beispiel 1

Im folgenden Beispielcode haben wir zwei Klassen: Basisklasse und abgeleitete Klasse.

Die Basisklasse hat eine Memberfunktion, d. h.e., Anzeige(). Die abgeleitete Klasse wird von der Basisklasse geerbt und die Funktion display() neu definiert.

Dann haben wir einen Zeiger auf den Basisklassentyp deklariert und ein Objekt der abgeleiteten Klasse zugewiesen. Wenn wir also die Funktion display() mit dem Zeiger des Basisklassentyps aufrufen, wird die Basisklassenfunktion aufgerufen. Sie können die Ausgabe unten sehen.

In solchen Fällen bietet C++ jedoch eine Möglichkeit, die abgeleitete Klassenfunktion aufzurufen, indem die Basisklassenfunktion als virtuell deklariert wird. Wir werden ein anderes Beispiel sehen, um dies zu verstehen.

#einschließen
Verwenden von Namespace-Std;
Klasse Base_Class

Öffentlichkeit:
Leere Anzeige()

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

;
Klasse Derived_Class:öffentliche Base_Class

Öffentlichkeit:
Leere Anzeige()

cout << "I am in Derived class" 0 zurückgeben;

Beispiel 2

In diesem Beispiel haben wir die Funktion display() als virtuelle Funktion in der Basisklasse definiert. Der einzige Unterschied zum vorherigen Programm besteht darin, dass wir in der Basisklasse ein virtuelles Schlüsselwort vor „void display()“ hinzugefügt haben.

Wenn Sie nun die Ausgabe sehen, wird "Ich bin in der abgeleiteten Klasse" ausgegeben, was anzeigt, dass die Funktion der abgeleiteten Klasse aufgerufen wird class.

Das Schlüsselwort virtual (virtual function) in der Basisklasse ist dafür verantwortlich, dass für ein Objekt die richtige Funktion aufgerufen wird.

#einschließen
Verwenden von Namespace-Std;
Klasse Base_Class

Öffentlichkeit:
virtuelle Leeranzeige ()

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

;
Klasse Derived_Class:öffentliche Base_Class

Öffentlichkeit:
Leere Anzeige()

cout << "I am in Derived class" 0 zurückgeben;

Beispiel 3

Dies ist ein weiteres Beispiel für eine virtuelle Funktion. Wie Sie im folgenden Programm sehen können, haben wir eine Basisklasse definiert, d.e., Tier. Es gibt zwei abgeleitete Klassen: Hund und Kuh. Wir haben die Funktion eat() als virtuell in der Basisklasse definiert, d.h.e., Tier. Wir haben dann die Funktion eat() in den beiden abgeleiteten Klassen Dog und Cow neu definiert.  In der Funktion main() haben wir einen Zeiger der Basisklasse, d. h.e., Animal, und hängte dann die abgeleitete Klasse Dog . an. Wenn wir also die eat()-Funktion mit dem Basisklassenzeiger aufrufen, können wir die abgeleitete Klassenversion der eat()-Funktion aufrufen, d.h.e., die eat()-Funktion aus der Dog-Klasse. Wenn wir das Klassenobjekt Cow anhängen, können wir auf ähnliche Weise die abgeleitete Klassenversion der Funktion eat() aufrufen, d.e., die Funktion eat() aus der Cow-Klasse. Sie können dieses Verhalten in der Ausgabe unten deutlich sehen. 

#einschließen
Verwenden von Namespace-Std;
Klasse Tier

Öffentlichkeit:
virtuelle Leere essen ()

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

;
Klasse Hund:öffentliches Tier

Öffentlichkeit:
leer essen ()

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

;
Klasse Kuh:öffentliches Tier

Öffentlichkeit:
leer essen ()

cout << "Cow - eat veg!" a_ptr = neue Kuh();
a_ptr->essen();
0 zurückgeben;

Fazit

In diesem Artikel habe ich das Konzept der virtuellen Funktion in C . erklärt++. C++ unterstützt verschiedene Arten von Polymorphismus - statischer Polymorphismus und dynamischer Polymorphismus. Mit Hilfe einer virtuellen Funktion können wir den Laufzeit/dynamischen Polymorphismus erreichen achieve. In diesem Artikel haben wir uns nur das Konzept der virtuellen Funktion angeschaut und wie man Laufzeitpolymorphismus erreicht. Ich habe drei Arbeitsbeispiele erklärt, um die virtuelle Funktion zu erklären.

Deaktivieren Sie unnötige Dienste Debian Linux
Dieser Artikel soll Ihnen dabei helfen, die Leistung zu steigern und Schwachstellen zu verringern, indem Sie die Anzahl der Dienste so gering wie mögl...
Alles über Debian /etc/network/interfaces-Datei
Die Datei /etc/network/interfaces verfügbar in Debian und seinen abgeleiteten Distributionen ermöglicht es, statische und dynamische IP-Adressen für d...
Vergleich zwischen Debian und Ubuntu
Heutzutage sind die Unterschiede zwischen Debian und Ubuntu für mittlere bis fortgeschrittene Benutzer minimal, außer für Benutzer, die aktuelle Softw...