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 :
!
(logique NOT)&
(adresse de)~
(complément)*
(déréférencement du pointeur)+
(unaire plus)-
(négation unaire)++
(incrément de préfixe) ou (incrément postfix)--
(décrémentation de préfixe) ou (décrémentation postfix)
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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour