Salut,
Juste pour info, histoire que nous parlions tous "le même langage": Contrairement à java ou à C# (pour lesquels il n'existe que la notion de méthode), C++ est un langage qui ne fait payer au développeur que le cout de ce qu'il utilise. Si bien que ce que tu appelle "méthode" s'appelle en réalité "fonction membre (d'une classe) et que l'on peut diviser ces fonctions en deux catégories:
- les fonctions dont le comportement est défini "une bonne fois pour toutes", sans possibilité pour les classes dérivées de fournir une autre implémentation de celui-ci et
- les fonctions dont le comportement peut être redéfini par les classes dérivées.
En C++, le terme méthode correspond en réalité à la deuxième catégorie de fonctions, que l'on désigne souvent aussi sous le terme de "fonctions virtuelles" (parce qu'elles sont, tout simplement, précédées du mot clé
virtual)
De langages comme java et C# ne font pas cette différence parce que, pour eux, il est systématiquement possible de redéfinir le comportement de n'importe quelle fonction dans les classes dérivées. En C++, nous dirions que toutes les fonctions sont implicitement virtuelles en java et en C#
Mais, comme ce n'est pas le cas en C++, il faut bien être conscient que le terme méthode ne s'applique qu'à une petite partie seulement des fonctions membres que l'on pourra rencontrer: les fonctions membres virtuelles. En effet, si toutes les méthodes (autrement dit : les fonctions membres virtuelles) sont des fonctions membres, toutes les fonctions membres ne sont pas forcément des méthodes (autrement dit des fonctions membres virtuelles).
Et c'est d'autant plus vrai que les fonctions membres ne sont considérées comme virtuelle en C++ que si on le signale de manière explicite au compilateur (au travers du mot clé virtual), si bien que, par défaut, les fonctions membres... ne sont pas des méthodes.
Dés lors, je sais que cela a l'air idiot de prime abord, essayons d'éviter l'utilisation du terme "méthode" en C++, à moins d'avoir la certitude qu'il sera bel et bien compris de la même manière par tout le monde et nous préférons donc parler de "fonction membre", quitte à parler spécifiquement de "fonction membre virtuelle" s'il est évident que le comportement de la fonction doit pouvoir être redéfini dans les classes dérivées.
Je suis bien conscient que cela n'a absolument rien à voir avec ton problème d'origine, mais je suis également conscient au vu de ta question que tu est strictement débutant. Si j'ai pris le temps d'écrire cette tartine, c'est parce que le plus difficile n'est pas forcément d'apprendre un langage, aussi complexe puisse-t-il être, mais bien d'apprendre le jargon des développeurs qui utilisent ce langage
Partager