Bonjour

J'aurais une question concernant le polymorphisme et l'appel d'une fonction.

Considérons une classe Shape et une sous-classe Circle et les deux fonctions surchargées suivantes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
void fonction(Shape* shape);
void fonction(Circle* circle);
Je voudrais savoir, en appelant la fonction ci-dessus avec comme argument un pointeur vers un objet dont le type à l'exécution est Circle, laquelle des deux versions de la fonction sera apellée ?

Par exemple l'appel suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Circle* circle = new Circle();
fonction(circle);
En effet les deux versions pourraient etre apellées puisque qu'un objet de type Circle est aussi du type Shape.

Merci d'avance de votre réponse.