[C++] La différence entre les fonctions virtuelles et les fonctions virtuelles pures

La différence entre les fonctions virtuelles C++ et les fonctions virtuelles pures | Tutoriel pour débutants Tout d'abord : mettez l'accent sur un concept : définir une fonction comme une fonction virtuelle 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. 1. Introduction Supposons que nous ayons la hiérarchie de classes suivante : instance [mycode3 type='cpp'] class A { public: virtua.. https://www.runoob.com/w3cnote/cpp-virtual-functions.html

Définir une fonction comme fonction virtuelle ne signifie pas que la fonction n'est pas 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.

1. Fonction virtuelle

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 notions sur les fonctions virtuelles. Il est basé sur ce que l'on appelle la "liaison différée" ou "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 ».

2. Fonction virtuelle pure

Une fonction virtuelle pure est une fonction virtuelle déclarée dans la classe de base. Elle n'est pas définie dans la classe de base, mais nécessite que toute classe dérivée définisse sa propre méthode d'implémentation. La façon d'implémenter une fonction virtuelle pure dans une classe de base est d'ajouter =0 après le prototype de fonction :

virtual void funtion1()=0

Une classe qui déclare des fonctions virtuelles pures est une classe abstraite. Par conséquent, les utilisateurs ne peuvent pas créer d’instances d’une classe, mais uniquement des instances de ses classes dérivées.

Je suppose que tu aimes

Origine blog.csdn.net/xiaoyu_wu/article/details/122832490
conseillé
Classement