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).
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } };
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
Partager