Bonjour

en codant aujourd hui, je constate un comportement que je connaissais pas. Mettons que j'aie deux classes, une classe "Mere" et "Enfant" possédant toute deux une méthode virtuelle "methode()". Enfant hérite de Mere, sa méthode est donc censée remplacer celle de Mere.

Dans le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Mere objet = Enfant();
objet.methode();
C'est le code de la méthode de Mere qui est appelé. En revanche avec le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Mere* objet = new Enfant();
objet->methode();
C'est bien le code de la méthode "methode()" de Enfant qui est appelé (ce qui le comportement que je recherche).

Ma question est : est-ce normal ? Si oui pourquoi ? N'est ce pas bête de restreindre le polymorphisme aux pointeurs ?