Bonjour,

J'ai étudié les différents types de polymorphisme grâce à la FAQ C++.
Je souhaiterais avoir votre confirmation sur ma compréhension du sujet et vous poser quelques questions supplémentaires.
Si je dis des bêtises, n'hésitez surtout pas à me le signaler

Il existe 4 types de polymorphismes.

Ad-hoc :
  • coercition
  • surcharge


Universel :
  • paramétrique
  • inclusion


Polymorphisme de coercition (conversion implicite des variables) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
int valInt = 2;
double valDouble = 2.2;
double resultat = valInt + valDouble; // Conversion implicite de valInt en double.
Polymorphisme de surcharge (surcharge des fonctions/méthodes) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
void maFonction(int arg);
int maFonction(double arg);
char maFonction(char arg, char arg2);
Polymorphisme paramétrique :
"utilisation des techniques génériques pour offrir un même service pour tout un ensemble de types"
Utilisation de template et flux de sortie ?

Polymorphisme d'inclusion (héritage des méthodes) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
class Mere{
public:
    void methodeMere(); // La méthode sera héritée dans la classe Fille
};
 
class Fille : public Mere{
 
};

Mes questions :
  1. Je n'ai pas très bien compris le polymorphisme paramétrique, pouvez-vous m'en dire un petit peu plus sur ce type de polymorphisme ?
  2. A quel type de polymorphisme appartient le code suivant ? Par élimination je me dis qu'il s'agit du polymorphisme d'inclusion mais pourquoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ClasseFille f;
    ClasseMere &obj = f;
  3. Aussi il y a une autre chose que je ne comprend pas, pourquoi "le polymorphisme d'inclusion s'appuie sur l'héritage public" ? Pourquoi public et pas protected par exemple ?
    Source ici.


Merci pour vos lumières