Hello,
Quand tu hésites, mets un serial.print unique dans chaque fonction pour savoir laquelle est bien utilisée ![]()
Sinon, je vois que tu ne sembles pas bien comprendre la notion d'héritage et de polymorphisme.
Héritage : quand une classe B hérite d'une classe A, B se comporte comme A avec des ajouts de méthodes et propriétés. Toute fonction publique de A peut s'appeler sur B. B peut aussi cacher des propriétés et méthodes de A en les redéclarant private ou protected.
De plus, B peut remplacer des méthodes de A, et quand on appelle B.méthodedeA(), c'est le code de B qui est alors utilisé.
Polymorphisme : quand on déclare une méthode "virtual" dans A, A devient "dynamique" (ou polymorphe). Si l'on utilise un pointeur vers A et qu'on appelle une fonction virtuelle, c'est la méthode de "l'enfant le plus bas" qui est appelée (par exemple B->maFonctionVirtuelle), si le pointeur vers A est en fait un B.
L'héritage permet d'acquérir un comportement (celui du parent), le polymorphisme permet de gérer un ensemble d'objets hétéroclites mais ayant la même interface (les méthodes virtuelles du parent commun).
Si tu aimes la lecture, je te conseille l'excellent livre "Desing Patterns Tête la Première" chez O'Reilly. C'est sur Java, mais la partie théorique (99% du bouquin) est commune au C++ et autres langages orientés objet.