J'ai lu quelques questions ici sur SO à propos de ce sujet qui me semble encore confus. Je viens juste de commencer à apprendre le C++ et je n'ai pas encore étudié les templates ou la surcharge des opérateurs et autres.
Existe-t-il un moyen simple de surcharger
class My {
public:
int get(int);
char get(int);
}
sans modèles ou comportement étrange ? ou dois-je simplement
class My {
public:
int get_int(int);
char get_char(int);
}
?
3 votes
Duplicata possible de Surcharge des fonctions par type de retour ?
1 votes
@AdamV, j'aime beaucoup votre commentaire. Court mais tout à fait solide.
0 votes
@Adam V En fait, il existe déjà une telle ambiguïté en prenant l'adresse d'une fonction surchargée. Dans ce cas, il devrait y avoir une attente de type de l'expression. S'il n'y en a pas, le programme est mal formé. Et ceci est déjà implémenté. Je ne pense pas qu'il soit très difficile d'utiliser les mêmes règles pour implémenter la surcharge des fonctions par type de retour. Ainsi, dans votre exemple concret, l'ambiguïté sera levée par un cast du type retourné. L'instanciation avec
int
La valeur de retour ressemblera à ceci(int)get(9)
et avecchar
comme ceci(char)get(9)
.0 votes
Lorsque vous en arrivez là, je pense que le meilleur choix est de penser à deux noms de fonctions différents comme le suggère Luchian.