Une fonction virtuelle fait référence : à une fonction membre déclarée comme virtuelle dans une classe de base et redéfinie dans une ou plusieurs classes dérivées, c'est-à-dire une fonction membre modifiée par le mot-clé virtual le format est « fonction virtuelle » Retour ; tapez le nom de la fonction (liste de paramètres) {corps de la fonction}".
Une fonction membre déclarée comme virtuelle dans une classe de base et redéfinie dans une ou plusieurs classes dérivées, le format d'utilisation est : virtual 函数返回类型 函数名(参数表) {函数体}
; accédez à la fonction membre de substitution du même nom dans la classe dérivée via le pointeur de classe de base ou la référence pointant vers la classe dérivée.
En termes simples, les fonctions membres modifiées par le mot-clé virtual sont des fonctions virtuelles.
Tout d'abord : insistez sur le concept de définition d'une fonction comme une fonction virtuelle, ce qui ne signifie pas que la fonction est une fonction non implémentée. Elle est définie comme une fonction virtuelle pour permettre d'appeler la fonction de la sous-classe à l'aide d'un pointeur de la classe de base. Définir une fonction comme une fonction virtuelle pure signifie que la fonction n'est pas implémentée. Le but de définir une fonction virtuelle pure est d'implémenter une interface et de servir de spécification. Les programmeurs qui héritent de cette classe doivent implémenter cette fonction.
Exemple :
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; }
Cet exemple est une application typique des fonctions virtuelles. Grâce à cet exemple, vous pouvez avoir quelques concepts sur les fonctions virtuelles. Il est basé sur ce que l'on appelle la « liaison différée » ou la « liaison dynamique ». L'appel d'une fonction de classe n'est pas déterminé au moment de la compilation, mais au moment de l'exécution. Puisqu'il n'est pas possible de déterminer si la fonction appelée est une fonction de la classe de base ou une classe dérivée lors de l'écriture du code, on l'appelle une fonction « virtuelle ». Les fonctions virtuelles ne peuvent obtenir des effets polymorphes qu'à l'aide de pointeurs ou de références.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!