Non. Tout est implémenté (pour l'instant) avec des pointeurs sur des fonctions. Donc, quand tu construis le premier objet Wheel, il est assigné au champ "roll" dans sa structure de classe l'adresse de la fonction roll tel qu'implémenté dans Wheel.
Quand tu construis le premier objet BetterWheel, il est assigné au champ "roll" dans sa structure de class l'adresse de la fonction roll tel qu'implémenté dans BetterWheel. Ainsi, quand w2.roll est traduit par le compilateur en w2->_class->_roll() cela référence la bonne version.
L'assignation des pointeurs de méthodes dans les structures de classes n'est faite qu'une seule fois par classe, et toutes les structures d'objet pointent vers la meme structure de classe, donc il n'y a quasiment aucun gaspillage mémoire ni CPU.
[^] # Re: ObjectiveC
Posté par Amos Wenger . En réponse à la dépêche Le language de programmation ooc sorti en version 0.2. Évalué à 1.
Quand tu construis le premier objet BetterWheel, il est assigné au champ "roll" dans sa structure de class l'adresse de la fonction roll tel qu'implémenté dans BetterWheel. Ainsi, quand w2.roll est traduit par le compilateur en w2->_class->_roll() cela référence la bonne version.
L'assignation des pointeurs de méthodes dans les structures de classes n'est faite qu'une seule fois par classe, et toutes les structures d'objet pointent vers la meme structure de classe, donc il n'y a quasiment aucun gaspillage mémoire ni CPU.