« Programmation C++/Polymorphisme » : différence entre les versions
Contenu supprimé Contenu ajouté
Aucun résumé des modifications |
m <source> -> <syntaxhighlight> (phab:T237267) |
||
Ligne 10 :
Soit une classe A implémentée de la manière suivante :
<
class A
{
Ligne 17 :
static void sort(A** tableau_de_a,int nombre); // tri
};
</syntaxhighlight>
La méthode statique <code>sort</code> effectue le tri du tableau en appelant la méthode <code>compare</code>.
Soit une classe B héritant de A, ayant un critère supplémentaire de comparaison. Il faut donc une nouvelle version de la méthode de comparaison :
<
class B : public A
{
Ligne 28 :
int compare(A autre); // compare deux objets A
};
</syntaxhighlight>
== Problème ==
Ligne 37 :
Pour que la méthode appelée soit celle de la classe B, il faut qu'elle soit déclarée virtuelle (<code>virtual</code>) dans la classe de base :
<
class A
{
Ligne 44 :
static void sort(A** tableau_de_a,int nombre); // tri
};
</syntaxhighlight>
La fonction de tri appellera alors la méthode selon le type réel des objets, même en utilisant un pointeur sur des objets A.
|