Déréferencement des méthodes virtuelles
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:
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:
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 ?