Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los operadores unarios generan un resultado de un único operando. Puede definir sobrecargas de un conjunto estándar de operadores unarios para trabajar en tipos definidos por el usuario.
Operadores unarios sobrecargables
Puede sobrecargar los siguientes operadores unarios en tipos definidos por el usuario:
!(NOT lógico)&(dirección de)~(complemento)+(unario más)-(negación unaria)--(decremento de prefijo) o (decremento postfijo)
Declaraciones de sobrecarga de operadores unarios
Puede declarar operadores unarios sobrecargados como funciones miembro no estáticas o como funciones no miembro. Las funciones miembro unarias sobrecargadas no toman ningún argumento porque operan implícitamente en this. Las funciones no miembro se declaran con un argumento. Cuando se declaran ambos formularios, el compilador sigue las reglas para la resolución de sobrecargas para determinar qué función se va a usar, si existe.
Las reglas siguientes se aplican a todos los operadores unarios de prefijo. Para declarar una función de operador unario como una función miembro no estática, use este formulario de declaración:
return-typeoperatorop();
En este formulario, return-type es el tipo de valor devuelto y op es uno de los operadores enumerados en la tabla anterior.
Para declarar una función de operador unario como una función no miembro, use este formulario de declaración:
return-typeoperatorop(class-type);
En este formulario, return-type es el tipo de valor devuelto, op es uno de los operadores enumerados en la tabla anterior y class-type es el tipo de clase del argumento en el que se va a operar.
Las formas de postfijo de ++ y -- toman un argumento adicional int para distinguirlos de los formularios de prefijo. Para obtener más información sobre las formas de prefijo y postfijo de ++ y --, vea Sobrecarga de operadores de incremento y decremento.
Nota:
No hay ninguna restricción en los tipos de valor devuelto de los operadores unarios. Por ejemplo, tiene sentido que NOT lógico (!) devuelva un bool valor, pero este comportamiento no se aplica.