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".
Partager