Eine virtuelle Funktion ist eine Mitgliedsfunktion, die in der Basisklassen-/übergeordnete Klasse definiert und in der abgeleiteten Klasse neu definiert ist. Virtuelle Funktion ermöglicht das Aufrufen der abgeleiteten Klassenversion der Funktion mithilfe der Referenz oder dem Zeiger auf die Basisklasse.
Lassen Sie uns einige Beispiele sehen, um das Konzept der virtuellen Funktion zu verstehen.
Im ersten Beispiel werden wir das Verhalten der nicht virtuellen Funktion sehen und dann im zweiten Beispiel das Verhalten einer virtuellen Funktion erklären.
Beispiel 1
Im folgenden Beispielcode haben wir zwei Klassen: Basisklasse und abgeleitete Klasse.
Basisklasse hat eine Mitgliedsfunktion, ich.e., Anzeige(). Die abgeleitete Klasse wird aus der Basisklasse vererbt 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 Basisklassentypzeiger aufrufen, wird die Funktion der Basisklassen 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.
#enthalten
Verwenden von Namespace STD;
Klasse Base_class
öffentlich:
void Display ()
Cout << "I am in Base class" << endl;
;
Klasse abgeleitet_class: public base_class
öffentlich:
void Display ()
Cout << "I am in Derived class"Rückkehr 0;
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, druckt sie „Ich bin in der abgeleiteten Klasse“, was darauf hinweist, dass die abgeleitete Klassenfunktion aufgerufen wird.
Das virtuelle Schlüsselwort (virtuelle Funktion) in der Basisklasse ist verantwortlich, um sicherzustellen, dass die richtige Funktion für ein Objekt auffordert.
#enthalten
Verwenden von Namespace STD;
Klasse Base_class
öffentlich:
Virtuelle Leere Display ()
Cout << "I am in Base class" << endl;
;
Klasse abgeleitet_class: public base_class
öffentlich:
void Display ()
Cout << "I am in Derived class"Rückkehr 0;
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, ich.e., Tier. Es gibt zwei abgeleitete Klassen: Hund und Kuh. Wir haben die EAT () -Funktion in der Basisklasse als virtuell definiert, ich.e., Tier. Wir haben dann die Eat () -Funktion sowohl in den abgeleiteten Klassen, Hund als auch in Kuh neu definiert. In der main () -Funktion haben wir einen Zeiger der Basisklasse, ich.e., Tier und dann die abgeleitete Klasse angeschlossen, Hund. Wenn wir also die Eat () -Funktion mit dem Basisklassenzeiger nennen, können wir die abgeleitete Klassenversion von Eat () -Funktion aufrufen, i.e., Die EAT () -Funktion aus der Hundeklasse. In ähnlicher Weise können wir, wenn wir das Kuhklassenobjekt anhängen, die abgeleitete Klassenversion der Eat () -Funktion, i.e., Die EAT () -Funktion aus der Kuhklasse. Sie können dieses Verhalten im folgenden Ausgang deutlich sehen.
#enthalten
Verwenden von Namespace STD;
Klassentier
öffentlich:
Virtuelle Leere ()
Cout << "Animal - base class - undefined eating behavior." << endl;
;
Klassenhund: öffentliches Tier
öffentlich:
void eat ()
Cout << "Dog - eat non-veg!" << endl;
;
Klassenkuh: öffentliches Tier
öffentlich:
void eat ()
Cout << "Cow - eat veg!"a_ptr = new Cow ();
a_ptr-> eat ();
Rückkehr 0;
Abschluss
In diesem Artikel habe ich das Konzept der virtuellen Funktion in C erklärt++. Das C ++ unterstützt verschiedene Arten von Polymorphismus - statischer Polymorphismus und dynamischer Polymorphismus. Mit Hilfe einer virtuellen Funktion können wir den Laufzeit/den dynamischen Polymorphismus erreichen. In diesem Artikel haben wir uns nur das Konzept der virtuellen Funktion und das Erreichen von Laufzeitpolymorphismus untersucht. Ich habe drei Arbeitsbeispiele erklärt, um die virtuelle Funktion zu erklären.