Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist eine virtuelle Funktion?

Was ist eine virtuelle Funktion?

清浅
清浅Original
2019-05-05 16:54:4815803Durchsuche

Virtuelle Funktion bezieht sich auf: eine Mitgliedsfunktion, die in einer Basisklasse als virtuell deklariert und in einer oder mehreren abgeleiteten Klassen neu definiert wird, d. h. eine durch das Schlüsselwort „virtuelle Funktion“ geänderte Mitgliedsfunktion Geben Sie den Funktionsnamen (Parameterliste) {Funktionskörper} ein.

Was ist eine virtuelle Funktion?

Eine Mitgliedsfunktion, die in einer Basisklasse als virtuell deklariert und in einer oder mehreren abgeleiteten Klassen neu definiert wird, ist das Verwendungsformat: virtual 函数返回类型 函数名(参数表) {函数体}; Greifen Sie über einen Basisklassenzeiger oder eine Referenz, die auf die abgeleitete Klasse zeigt, auf die überschriebene Memberfunktion mit demselben Namen in der abgeleiteten Klasse zu.

Einfach ausgedrückt sind die durch das Schlüsselwort virtual geänderten Mitgliedsfunktionen virtuelle Funktionen.

Zunächst einmal: Betonen Sie das Konzept, eine Funktion als virtuelle Funktion zu definieren, was nicht bedeutet, dass die Funktion eine nicht implementierte Funktion ist. Sie ist als virtuelle Funktion definiert, um den Aufruf der Funktion der Unterklasse über einen Zeiger der Basisklasse zu ermöglichen. Die Definition einer Funktion als rein virtuelle Funktion bedeutet, dass die Funktion nicht implementiert ist. Der Zweck der Definition einer rein virtuellen Funktion besteht darin, eine Schnittstelle zu implementieren und als Spezifikation zu dienen. Programmierer, die diese Klasse erben, müssen diese Funktion implementieren.

Beispiel:

class A
{
public:
virtual void foo()
{
cout<<"A::foo() is called"<<endl;
}
};
class B:public A
{
public:
void foo()
{
cout<<"B::foo() is called"<<endl;
}
};
int main(void)
{
A *a = new B();
a->foo(); // 在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的!
return 0;
}

Dieses Beispiel ist eine typische Anwendung virtueller Funktionen. Durch dieses Beispiel haben Sie möglicherweise einige Konzepte über virtuelle Funktionen. Es basiert auf dem sogenannten „Deferred Binding“ oder „Dynamic Binding“. Der Aufruf einer Klassenfunktion wird nicht zur Kompilierungszeit, sondern zur Laufzeit bestimmt. Da beim Schreiben des Codes nicht festgestellt werden kann, ob die aufgerufene Funktion eine Funktion der Basisklasse oder eine abgeleitete Klasse ist, wird sie als „virtuelle“ Funktion bezeichnet. Virtuelle Funktionen können polymorphe Effekte nur mit Hilfe von Zeigern oder Referenzen erzielen.

Das obige ist der detaillierte Inhalt vonWas ist eine virtuelle Funktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn