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) :
Polymorphisme de surcharge (surcharge des fonctions/méthodes) :
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 paramétrique :
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);
"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 :
- 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 ?
- 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;- 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
Partager