Surcharge des opérateurs unaires

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Présentation de la surcharge des fonctions opérateurs - Index

Vous pouvez surcharger un opérateur unaire préfixe ou suffixe en déclarant une fonction membre non statique n'acceptant aucun argument, ou en déclarant une fonction non membre prenant un argument. Si @ représente un opérateur unaire, @x et x@ peuvent tous les deux être interprétés comme x.operator@ () ou operator@(x), selon les déclarations. Si les deux formes ont été déclarées, il y a mise en correspondance avec l'argument standard pour résoudre l'ambiguïté.

  • Pour les versions inférieures à C++ 2.0, une surcharge de l'opérateur ++ ou – est utilisée comme suffixe ou préfixe de l'opérateur.
  • En C++ 2.1, lorsqu'un operator++ ou operator-- est déclaré fonction membre sans paramètres, ou fonction non membre avec un seul paramètre, il surcharge uniquement l'opérateur préfixe ++ ou --. Vous ne pouvez surcharger un opérateur suffixe ++ ou -- qu'en le définissant comme fonction membre prenant un paramètre int ou comme fonction non membre avec une classe et un paramètre int.

Lorsque seule la version préfixe d'un opérateur ++ ou - - est surchargée et que l'opérateur est appliqué à un objet de classe comme opérateur suffixe, le compilateur émet un avertissement. Puis, il appelle l'opérateur préfixe en permettant au code 2.0 de compiler. L'exemple précédent émet les avertissements suivants :



 Avertissement : Opérateur préfixe surchargé 'operator ++' utilisé comme opérateur suffixe dans la fonction func()
 Avertissement : Opérateur préfixe surchargé 'operator --' utilisé comme opérateur suffixe dans la fonction func()



Voir aussi