Ah la simplification - généricité
Bonjour,
J'ai un problème simple en C++ mais je ne suis pas sûr de saisir le sens des questions:
Problème:
"Écrire les 4 méthodes qui retournent le minimum de deux variables passées en
paramètre pour les types suivants int, char, float et double.
Quel problème pose cette solution?
Ne pourrait-elle pas être remplacée par une méthode unique générique ?
Quelle est cependant la limite de cette seconde solution?"
Voici ma réponse:
-La première solution consiste a créer 4 méthode simplyInt, simplyChar, simplyFloat, simplyDouble et d'utiliser le passage d'argument par référence afin de pouvoir retourner "le minimum de deux variables"
-La deuxième solution est apportée par le polymorphisme paramétrique ou surcharge de fonction, en créant une méthode surchargée avec les différents type int, char, float, double.
-Il existe une troisième solution qui n'est semble-t-il pas demandée dans l'exercice, qui consiste à faire un modèle de fonction (template).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
class simplifier
{
public:
//Solution 1
int simplyInt(int &a, int &b)
{
a++, b++;
return 0;
}
int simplyChar(char &a, char &b)
{
a++, b++;
return 0;
}
int simplyFloat(float &a, float &b)
{
a++, b++;
return 0;
}
int simplyDouble(double &a, double &b)
{
a++, b++;
return 0;
}
// Solution 2: Surcharge de méthode
int simplyf(int &a, int &b)
{
a++,b++;
return 0;
}
int simplyf(char &a, char &b)
{
a++,b++;
return 0;
}
int simplyf(float &a, float &b)
{
a++,b++;
return 0;
}
int simplyf(double &a, double &b)
{
a++,b++;
return 0;
}
// Solution 3: les templates
template <typename T>
T Tsimply(T &a, T &b)
{
a++,b++;
return 0;
}
}; |
Quelle est la différence entre la généricité apportée par la surcharge de méthode et la généricité apportée par les templates de fonctions.
Pensez-vous que le problème attend la solution 2 ou la solution 3 comme réponse ?
Je ne vois pas quoi répondre à la troisième question ... si ce n'est que pour la solution 2, il est nécessaire d'écrire le code de fonctions pour chaque combinaison de type.
Merci d'avance