Se connecter

Informatique

Programmation

Sujet : C++]mot clé virtual et fonction virtuell
1
rangerprice
Niveau 10
23 août 2014 à 00:47:42

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 ?

swarmpan
Niveau 9
23 août 2014 à 01:06:46

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

rangerprice
Niveau 10
23 août 2014 à 01:10:58

Swarmpan :d) 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 :(

Google_Bot
Niveau 12
23 août 2014 à 01:24:31

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).

1
Sujet : C++]mot clé virtual et fonction virtuell
   Retour haut de page
Consulter la version web de cette page