Virtual et le polymorphisme
Bonsoir,
Je programme en JAVA depuis quelques temps et je me suis mis au C++ pour mon travail, et je but sur un petit soucis concernant le polymorphisme.
J'ai écrit un petit code que voici :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| #include <iostream>
using namespace std;
class Mere
{
public :
virtual void AfficheNom(void);
};
void Mere::AfficheNom(void)
{
cout << "Je suis la mere" << endl;
}
class Fille : public Mere
{
public:
void AfficheNom(void);
};
void Fille::AfficheNom(void)
{
cout << "Je suis la fille" << endl;
}
int main()
{
Mere tableauDeMere[3];
Mere mere1;
Mere mere2;
Fille fille;
tableauDeMere[0] = mere1;
tableauDeMere[1] = fille;
tableauDeMere[2] = mere2;
for ( int i = 0; i < 3; i++ )
tableauDeMere[i].AfficheNom();
return 0;
} |
Lors de l'exécution, j'obtiens 3 fois "Je suis la mere".
Je pensais que l'attribut virtual permettait justement d'appeler la fonction redéfinie dans la classe fille dans ce genre de cas.
En JAVA, ce code donnerait le résultat suivant :
Je suis la mere
Je suis la fille
Je suis la mere
Y'a-t-il quelque chose que j'ai mal compris ?
Si oui, merci de m'éclairer :-)
Cdt,
Yann.