virtuelle*
Quelle est l'utilité du mot clé virtual en C++ ?
le mot clé virtual sert à déclarer des fonctions virtuelles mais , c'est quoi une fonction virtuelle ?
Et quelle est la différence avec une fonction virtuelle pûre ?
Une fonction virtuelle c'est une fonction que tu peux redéfinir ou compléter dans les classes filles.
Une fonction virtuelle pure n'est pas implémentée dans la classe mère (il n'y a rien entre les accolades) et tu es obligé de la définir dans une classe fille
Swarmpan C'est à peu près la même chose que le masquage une fonction virtuelle non ?
Le masquage permet de faire la même chose
Euh. Une méthode virtuelle pure peut aussi être implémentée (on en parlait récemment sur un autre thread, si je retrouve le lien je le poste ici), en pratique.
Et on peut très bien redéfinir une méthode non-virtuelle dans les classes filles, seulement l'édition de liens se fera quand même de manière statique si on ne déclare pas la méthode "mère" comme étant virtuelle.
Quand une méthode est virtuelle, et qu'elle est redéfinie dans des classes filles, le compilateur va gérer une table de méthodes virtuelles, et permettre de résoudre un appel pendant l'exécution plutôt qu'à la compilation. J'ai déjà expliqué ça dans ton autre topic, si B hérite de A et redéfinit sa méthode virtuelle "affiche()", avec ce code:
A* pointeur = new B();
pointeur->affiche();
Le code appelé sera celui de B::affiche() et non A::affiche(). Alors que dans le cas où affiche() ne serait pas virtuelle dans A, c'est A::affiche() qui serait appelée (même si pointeur pointe vers un objet de classe B).