Polymorphisme : le besoin de pointeurs/références
Le polymorphisme, concept fondamental de la programmation orientée objet, permet à des objets de différentes classes d'être traités comme s’ils appartenaient à une superclasse commune. Bien qu'il puisse sembler intuitif que l'allocation de mémoire sur le tas suffise pour une liaison dynamique, l'absence de pointeurs ou de références entrave fondamentalement le polymorphisme.
Pour comprendre pourquoi, considérons l'exemple suivant :
Derived d; Base* b = &d;
Dans ce scénario, d réside sur la pile, mais le polymorphisme reste fonctionnel pour b. En effet, b conserve les informations nécessaires pour localiser l'instance de classe dérivée.
D'un autre côté, sans pointeur ou référence de classe de base, le polymorphisme ne peut pas fonctionner. Considérez :
Base c = Derived();
En raison du découpage, l'objet c est reconnu comme une base plutôt que comme un objet dérivé. Bien que le polymorphisme fonctionne techniquement, l'objet de classe dérivé est essentiellement perdu.
Enfin, dans le code ci-dessous :
Base* c = new Derived();
c pointe simplement vers un emplacement mémoire, contenant potentiellement un objet de base ou dérivé . La liaison dynamique est toujours possible pour les appels de méthodes virtuelles car l'appelant ne connaît pas la classe spécifique.
Par conséquent, l'utilisation de pointeurs ou de références est indispensable pour le polymorphisme car ils :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!