Peu de compilateurs se servent de pointeurs de fonction dans les objets eux mêmes. Le mécanisme le plus utilisé est celui de la vtable, qui est une table contenant les pointeurs des fonctions virtuelles pour chaque CLASSE (et non objet). Pour les détails, voir l'excellent livre de Bruce Eckel "Thinking in C++" qui est disponible gratuitement en ligne, une vraie bible. En revanche, faire une implémentation du type vtable en C est relativement embêtant, étant donné que les appels de fonction virtuelles sont alors "spéciaux" et qu'il faut les gérer manuellement... On retrouve le même problème avec les pointeurs de fonction (amoindri certes) puisqu'il faut l'assigner manuellement... Enfin bref dans tous les cas c'est un beau bordel quand même, et quand on en vient à utiliser ces fonctionnalités (corrigez moi si je dis des conneries mais il me semble que les fonctions virtuelles ne sont pas spécifiquement de la POO) il vaut mieux changer pour un compilo C++ :)
Pour les appels à des pointeurs de fonction, je ne pense pas qu'il y ait le moindre surcoût. Après tout en assembleur x86, les fonctions sont appelés par leur adresse, non? Il ne s'agirait donc que du mécanisme naturel.
[^] # Re: POO ?
Posté par Gnurou (site web personnel) . En réponse à la dépêche Debian GNU/Hurd G1. Évalué à 1.
Pour les appels à des pointeurs de fonction, je ne pense pas qu'il y ait le moindre surcoût. Après tout en assembleur x86, les fonctions sont appelés par leur adresse, non? Il ne s'agirait donc que du mécanisme naturel.
Ca devient Da Programmers French Page ici... ;)