Polymorphisme (question de debutant)

Signaler
Messages postés
3
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
26 août 2004
-
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
-
Alors la, j'avoue que j'y perds mon latin ...
Regardez ce code :

class CMere
{
public:
int toto (char * var1, int var2);
int toto (char * var1);

CMere();
virtual ~CMere();

};

CMere::CMere()
{
cout << "Constructeur CMere" << endl;
}

CMere::~CMere()
{

}

int CMere::toto(char *var1, int var2)
{

return(1);
}

int CMere::toto(char *var1)
{

return(2);
}

class CFille : public CMere
{
public:
int toto (char *var1);
CFille();
virtual ~CFille();

};

CFille::CFille()
{
cout << "Constructeur CFille" << endl;
}

CFille::~CFille()
{

}

int CFille::toto(char *var1)
{

return(3);
}

void main (void) {

char * c = "coucou!!!";
CFille monobjet;
cout << monobjet.toto(c) << endl;
//cout << monobjet.toto(c,2) << endl; // c'est une erreur !!!!

CMere monobjet2;
cout << monobjet2.toto(c) << endl;
cout << monobjet2.toto(c,2) << endl;

}

Voila donc un code fort simple et qui ne fait pas grand chose :
je redefinit la methode int toto (char*) dans la classe fille CFille.
Or, ce faisant, je cache aussi la methode int toto (char *, int) de la classe mere CMere.
Mais il me semblait que la signature d'une fonction en C++ depend du nom ET de ses arguments !!!
Ou est le probleme ? Y'a forcement une partie de cours que j'ai loupe.
A quoi est ce du ?

3 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
tu as redefinie une fonction toto dans ta classe fille, tu dois rediriger avec l'orp pour lever l'ambiguitée

cout << monobjet.CMere::toto(c,2) << endl;
Messages postés
3
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
26 août 2004

D'accord pour etre capable d'appeler la methode toto(char *, int) de CMere.
Mais je ne sais toujours pas POURQUOI le fait de redefinir toto(char *) dans CFille me cache toto(char*, int) de CMere.
C'est ca qui me frustre !!
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
C le but de l'héritage

la fonction redéfinie cache celle de la mere, de l'extérieurs, seule la celle de la fille (la + jeune) doit etre accessible puis, au besoin, on remonte....

Magic Nono: l'informagicien! 8-)