Qu'est-ce qu'une fonction virtuelle

清浅
Libérer: 2020-10-13 10:54:52
original
15828 Les gens l'ont consulté

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}".

Qu'est-ce qu'une fonction virtuelle

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;
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!