Polymorphisme en C++
Le mot polymorphisme signifie avoir plusieurs formes. En général, le polymorphisme se produit lorsqu’il existe une hiérarchie de classes et qu’elles sont liées par héritage.
Le polymorphisme en C++ signifie qu’un appel à une fonction membre entraînera l’exécution d’une fonction différente en fonction du type d’objet qui appelle la fonction.
Prenons l’exemple suivant où une classe de base a été héritée par deux autres classes.
#include <iostream> using namespace std; class Polygone { protected: int width, height; public: void update (int a, int b){ width = a; height = b; } }; class Rectangle: public Polygone { public: int aire(){ return width * height; } }; class Triangle: public Polygone { public: int aire(){ return width * height/2; } }; int main () { Rectangle r; Triangle t; Polygone * p1 = &r; Polygone * p2 = &t; p1->update(2,3); p2->update(2,3); cout << r.aire() << endl; cout << t.aire() << endl; return 0; }
La sortie :
La fonction main déclare deux pointeurs sur Polygone (nommés p1 et p2). Celles-ci se voient attribuer les adresses respectives de r et t, qui sont des objets de type Rectangle et Triangle. Ces affectations sont valides, car Rectangle et Triangle sont des classes dérivées de Polygone.