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 ?