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 C++ : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Je le site : "Le compilateur fait comme si le mot clé "virtual" était présent."
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".