Méthodes dynamiques
Remonter à Répartition des méthodes
Les méthodes dynamiques sont des méthodes virtuelles avec un mécanisme de répartition légèrement différent. Comme les méthodes dynamiques n'ont pas d'entrées dans le tableau de méthode virtuelle de l'objet, elles peuvent réduire la taille de la mémoire consommée par les objets. Cependant les méthodes de répartition dynamiques sont quelque peu plus lentes que les méthodes de répartition virtuelles normales. Si une méthode est fréquemment appelée, ou si son exécution nécessite un temps court, vous devrez probablement la déclarer virtuelle plutôt que dynamique.
Les objets doivent stocker les adresses de leurs méthodes dynamiques. Mais plutôt que de recevoir les entrées dans le tableau de méthode virtuelle, les méthodes dynamiques sont indiquées séparément. La liste des méthodes dynamiques contient des entrées uniquement pour les méthodes introduites ou redéfinies par une classe particulière. Le tableau de méthode virtuelle, à l'inverse, comprend toutes les méthodes virtuelles de l'objet, à la fois héritées et introduites. Les méthodes dynamiques héritées sont réparties en cherchant chaque liste de méthode dynamique de l'ancêtre, en allant en arrière dans l'arborescence de l'héritage.
Pour rendre une méthode dynamique, ajoutez la directive dynamic après la déclaration de méthode.