S'il vous plaît considérer le code suivant ici est mis en œuvre deux versions de postfix et de préfixes, j'ai lu que la différence est faite en introduisant un autre argument charmant, mais j'ai une question si nous Voir la déclaration de ces p> Ils sont diverrés par & mark, alors pourquoi il est nécessaire argument factice? Et aussi dans les deux cas de l'exemple ++ opérateur est écrit avant l'argument et Cela ne signifie-t-il pas qu'ils sont les mêmes? p> p>
4 Réponses :
Le pré-incraction et la post-augmentation sont deux opérateurs distincts et nécessitent des surcharges séparées. P>
C ++ ne permet pas de surcharger uniquement sur le type de retour, de sorte que différents types de retour, comme dans votre exemple ne suffiraient pas à désambiguez les deux méthodes. P>
L'argument factice est le mécanisme que le concepteur de C ++ a choisi pour le désambigation. P>
J'imagine qu'il y a une notation dans le bras ou quelque part pourquoi c'était la méthode choisie par désambiguït. La réponse est probablement aussi simple que "il n'y avait pas d'autre moyen".
L'opérateur, tout comme n'importe quelle fonction, est identifié par la signature. Le type de retour et les modificateurs avant que le nom de la fonction / opérateur ne soit pas inclus dans cela. Les noms de vos opérateurs sont ici
operator++() operator++(int)
Les fonctions / méthodes C ++ ne peuvent pas être surchargées par type de retour, uniquement par liste de paramètres. Ignorer le fait que les opérateurs de préfixes et de postfix sont des opérateurs, imaginez s'ils n'étaient que simplement d'autres fonctions, comment le compilateur fonctionnerait-il à utiliser sur la base du type de retour? EG
int x = 2; const int DoIt() { return 1; } int& DoIt() { return x; } int y = DoIt();
En pré-augmentation / décrémentation et post-incrément / décrément, la différence est basée sur uniquement le paramètre factice dans la fonction surchargée
operator++() => Prefix Increment operator--() => Prefix Decrement operator++(int) => Postfix Increment operator--(int) => Postfix Decrement