Surcharge des opérateurs unaires

Les opérateurs unaires produisent un résultat à partir d’un opérande unique. Vous pouvez définir des surcharges d’un ensemble standard d’opérateurs unaires pour travailler sur des types définis par l’utilisateur.

Opérateurs unaires surchargés

Vous pouvez surcharger les opérateurs unaires suivants sur les types définis par l’utilisateur :

Déclarations de surcharge d’opérateur unaire

Vous pouvez déclarer des opérateurs unaires surchargés en tant que fonctions membres non statiques ou en tant que fonctions non membres. Les fonctions membres unaires surchargées ne prennent aucun argument, car elles fonctionnent implicitement sur this. Les fonctions nonmember sont déclarées avec un seul argument. Lorsque les deux formulaires sont déclarés, le compilateur suit les règles de résolution de surcharge pour déterminer la fonction à utiliser, le cas échéant.

Les règles suivantes s’appliquent à tous les opérateurs unaires de préfixe. Pour déclarer une fonction d’opérateur unaire en tant que fonction membre non statique, utilisez ce formulaire de déclaration :

return-type operator op ();

Dans ce formulaire, return-type est le type de retour et op est l’un des opérateurs répertoriés dans le tableau précédent.

Pour déclarer une fonction d’opérateur unaire en tant que fonction non membre, utilisez ce formulaire de déclaration :

return-type operator op ( class-type );

Dans ce formulaire, return-type est le type de retour, op est l’un des opérateurs répertoriés dans le tableau précédent et class-type est le type de classe de l’argument sur lequel opérer.

Les formes postfixes de ++ et -- prennent un argument supplémentaire int pour les distinguer des formes de préfixe. Pour plus d’informations sur les formes de préfixe et de postfixage, ++--consultez Incrément et décrémentation de surcharge d’opérateur.

Remarque

Il n’existe aucune restriction sur les types de retour des opérateurs unaires. Par exemple, il est logique de ne pas retourner une bool valeur logique,! mais ce comportement n’est pas appliqué.

Voir aussi

Surcharge d’opérateur