Junior
Qu'est-ce que le polymorphisme dans le contexte des langages de programmation C/C++?
sobes.tech IA
Réponse de l'IA
Le polymorphisme est la propriété des objets d’avoir plusieurs formes ou de représenter plusieurs types dans une hiérarchie d’héritage. Il permet de travailler avec des objets de différentes classes via une interface commune de la classe de base.
En C++, le polymorphisme est réalisé de deux manières principales :
-
Polymorphisme en temps de compilation (statique, polymorphisme ad-hoc) :
- Il est réalisé à l’aide de surcharge de fonctions et d’opérateurs.
- La sélection de la fonction ou de l’opérateur spécifique se fait lors de la compilation.
// Exemple de surcharge de fonctions void print(int a) { /* ... */ } void print(double b) { /* ... */ } -
Polymorphisme en temps d’exécution (dynamique, polymorphisme de sous-type) :
- Il est réalisé à l’aide de fonctions virtuelles et de pointeurs/liens vers la classe de base.
- La sélection de la fonction spécifique à appeler se fait lors de l’exécution.
- Nécessite qu’au moins une fonction virtuelle soit présente dans la classe de base.
- Utilise la table de fonctions virtuelles (vtable).
// Exemple de polymorphisme dynamique class Base { public: virtual void show() { /* Implémentation dans la classe de base */ } }; class Derived : public Base { public: void show() override { /* Implémentation redéfinie */ } }; // Utilisation Base* ptr = new Derived(); ptr->show(); // Appelle Derived::show()
Le polymorphisme permet d’écrire un code plus flexible et extensible, car de nouvelles classes peuvent être ajoutées sans modifier le code existant qui fonctionne avec la classe de base.