Redéfinition du méthode virtuel
Bonjour,
Je voudrais avoir vos lumière quand à la nécessité du mot clé "virtual" lors de la redéfinition d'une méthode dans une classe dérivée. Dans le code développé par mon collègue, à certain moment, les méthodes virtuelles perde le mot clé "virtual" dans la déclaration. Comme la méthode test() dans l'exemple si dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class A
{
public:
virtual void test()
{
std::cout << "test classe A" << std::endl;
}
};
class B : public A
{
public:
void test()
{
std::cout << "test classe B" << std::endl;
}
}; |
Mon collègue me soutient que cela n'a pas d'importance et que la méthode test() est bien surchargée.:weird:
Je le site : "Le compilateur fait comme si le mot clé "virtual" était présent." :weird::weird::weird:
En cherchant sur internet (google à été mon ami) j'ai eu des confirmations de cette règle (site MSDN et IBM) mais l'explication n'est pas très clair ?!
Pourriez vous me confirmer s'il n'y a pas de risque à faire cela ? Quid du destructeur ?
Personnellement, je ne m'était jamais poser cette question car j'écrivais toujours "virtual" lors de la surcharge d'une méthode "virtual".