- Vael,
Bonjour,
C'est une petite demande d’éclaircissement. Lorsqu'il y a une classe fille qui dérivent d'une classe elle même fille, on voit parfois que les fonctions virtuels de la classe mère sont toujours ré-definie comme virtuel dans les classes filles, petites-filles etc.
exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | class A { public: virtual void f() {std::cout<<"A"<<std::endl;} }; class B: public A { public: virtual void f() {std::cout<<"B"<<std::endl;} }; class C: public B { public: virtual void f() {std::cout<<"C"<<std::endl;} }; int main() { B b; C c; A * pab = &b; A * pac = &c; B * pbc = &c; pab->f(); pac->f(); pbc->f(); } |
Or si j’enlève le "virtual" dans les classes B et C ça ne change pas le résultat du code.
Y a-t-il une raison de mettre ce "virtual" ?
J'en voie une : rappeler au développeur qui gère une sous-sous-sous-etc classe que la fonction d'origine est virtuel. Mais y a-t-il une raison plus technique ?
+0
-0