Si vous surchargez - comme opérateur-(), il doit être utilisé à gauche de l'objet, mais surchargé() comme opérateur()() il est utilisé à droite de l'objet. Comment savons-nous quel opérateur doit être utilisé sur la gauche et quels sont ceux qui doivent être utilisés sur la droite?Surcharge de l'opérateur en C++
Répondre
Regardez le operator precedence chart. Cela vous indiquera la direction que l'opérateur associe (lie). Notez que certains opérateurs ont plusieurs formes avec des significations différentes, telles que binaire et unaire -
. Dans ce cas, vous pouvez avoir plusieurs surcharges, .: par exemple
T operator-()
et:
T operator-(const T &o)
Le compilateur choisit la bonne base sur l'interprétation de l'opérateur syntaxique.
Voir aussi cet élément utile set of guidelines.
Est-ce que 'operator-()' ne renvoie vraiment rien - ne devrait-il pas renvoyer une valeur du type approprié qui est soit la négation de la valeur, soit la différence entre les valeurs? –
Merci d'avoir attrapé ça, Jonathan. Fixé maintenant –
La plupart des opérateurs unaires ne peuvent être placés que du côté spécifié de leur opérande. Pour les deux cas particuliers, ++
et --
, voir this FAQ.
- 1. Surcharge en C++
- 2. C# en surcharge opérateur
- 3. Fonction surcharge en C
- 4. Surcharge en C++
- 5. Méthodes de surcharge en C#
- 6. opérateur surcharge en C++
- 7. surcharge flux en C++
- 8. surcharge de l'opérateur C++
- 9. C# Surcharge de l'opérateur
- 10. Résolution de surcharge C#?
- 11. surcharge de l'opérateur C++
- 12. problème de surcharge l'opérateur <en C++
- 13. Problèmes de pointeur avec surcharge en C++?
- 14. remplacer la surcharge de l'opérateur en C++?
- 15. Surcharge et réflexion de l'opérateur en C#
- 16. Surcharge de l'opérateur C++
- 17. L'ambiguïté de surcharge d'addition C++
- 18. problème override/surcharge C de
- 19. Surcharge en C++ << opérateur
- 20. Constructor surcharge problème en C++ Héritage
- 21. opérateur Surcharge en C++ comme int + obj
- 22. Surcharge d'un fichier existant en C#
- 23. Opérateur << surcharge en C++
- 24. surcharge [] [] dans C#
- 25. Opérateur de surcharge C# == et! =
- 26. C++ fonction de modèle SURCHARGE
- 27. C# Surcharge de constructeur d'objet
- 28. Insertion Surcharge C Stream
- 29. surcharge -> opérateur C++
- 30. Valeurs de vidange en cas de surcharge de l'opérateur C++
Cela a une réponse simple, mais du point de vue de quelqu'un de nouveau à la programmation, je peux imaginer que cela pourrait être une source de maux de tête. +1 –