« Programmation C++/Polymorphisme » : différence entre les versions

Contenu supprimé Contenu ajouté
Ajout des points virgules pour les déclarations des classes.
m Formatage, ajout de code
Ligne 15 :
static void sort(A** tableau_de_a,int nombre); // tri
};
La méthode statique <ttcode>sort</ttcode> effectue le tri du tableau en appelant la méthode <ttcode>compare</ttcode>.
 
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 :
Ligne 26 :
== Problème ==
 
Si on a un tableau de pointeur sur des objets B, la méthode <ttcode>compare</ttcode> appelée par la fonction de tri est celle de la classe A, car la fonction a pour paramètre un tableau de pointeur sur des objets A. Ce comportement n'est pas polymorphique.
 
== Solution ==
 
Pour que la méthode appelée soit celle de la classe B, il faut qu'elle soit déclarée virtuelle (<ttcode>virtual</ttcode>) dans la classe de base :
class A
{