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.
La palabra clave operator
declara una función especificando el significado del símbolo de operador cuando se aplica a las instancias de una clase. Esto proporciona al operador más de un significado, o lo "sobrecarga". El compilador distingue entre los diferentes significados de un operador examinando los tipos de sus operandos.
Sintaxis
type
operator
operator-symbol ( parameter-list )
Comentarios
Se puede redefinir la función de la mayoría de los operadores integrados de forma global o clase a clase. Los operadores sobrecargados se implementan como funciones.
El nombre de un operador sobrecargado es operator
x, donde x es el operador tal como aparece en la tabla siguiente. Por ejemplo, para sobrecargar el operador de suma, se define una función denominada operator+. Del mismo modo, para sobrecargar el operador de suma/asignación, +=, se define una función denominada operator+=.
Operadores redefinibles
Operator | Nombre | Tipo |
---|---|---|
, | Coma | Binario |
! | NOT lógico | Unario |
!= | Desigualdad | Binario |
% | Módulo | Binario |
%= | Asignación y módulo | Binario |
& | AND bit a bit | Binario |
& | Dirección de | Unario |
&& | Y lógico | Binario |
&= | Asignación AND bit a bit | Binario |
( ) | Llamada a función | — |
( ) | Operador de conversión | Unario |
* |
Multiplicación | Binario |
* |
Desreferencia de puntero | Unario |
*= |
Asignación y multiplicación | Binario |
+ | Suma | Binario |
+ | Unario más | Unario |
++ | Incremento 1 | Unario |
+= | Asignación y suma | Binario |
- | Resta | Binario |
- | Negación unaria | Unario |
-- | Decremento 1 | Unario |
-= | Asignación y resta | Binario |
-> | Selección de miembro | Binario |
->* |
Selección de puntero a miembro | Binario |
/ | División | Binario |
/= | Asignación y división | Binario |
< | Menor que | Binario |
<< | Desplazamiento a la izquierda | Binario |
<<= | Asignación y desplazamiento a la izquierda | Binario |
<= | Menor o igual que | Binario |
= | Cesión | Binario |
== | Igualdad | Binario |
> | Mayor que | Binario |
>= | Mayor o igual que | Binario |
>> | Desplazamiento a la derecha | Binario |
>>= | Asignación y desplazamiento a la derecha | Binario |
[ ] | Subíndice de matriz | — |
^ | OR exclusivo | Binario |
^= | Asignación y OR exclusivo | Binario |
| | OR inclusivo bit a bit | Binario |
|= | Asignación y OR inclusivo bit a bit | Binario |
|| | O lógico | Binario |
~ | Complemento a uno | Unario |
delete |
Eliminar | — |
new |
Nuevo | — |
operadores de conversión | operadores de conversión | Unario |
1 Existen dos versiones de los operadores de incremento y decremento unarios: preincremento y postincremento.
Vea Reglas generales de la sobrecarga de operadores para obtener más información. En los temas siguientes se describen las restricciones de las distintas categorías de operadores sobrecargados:
Los operadores que se muestran en la tabla siguiente no se pueden sobrecargar. La tabla incluye los símbolos de preprocesador # y ##.
Operadores no redefinibles
Operator | Nombre |
---|---|
. | Selección de miembro |
.* |
Selección de puntero a miembro |
:: | Resolución de ámbito |
? : | Condicional |
# | Conversión de preprocesador en una cadena |
## | Concatenación de preprocesadores |
Aunque el compilador suele llamar implícitamente a los operadores sobrecargados cuando se encuentran en el código, se pueden invocar explícitamente de la misma manera que cualquier función miembro o no miembro:
Point pt;
pt.operator+( 3 ); // Call addition operator to add 3 to pt.
Ejemplo
En el ejemplo siguiente se sobrecarga el operador + para sumar dos números complejos y se devuelve el resultado.
// operator_overloading.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
struct Complex {
Complex( double r, double i ) : re(r), im(i) {}
Complex operator+( Complex &other );
void Display( ) { cout << re << ", " << im << endl; }
private:
double re, im;
};
// Operator overloaded using a member function
Complex Complex::operator+( Complex &other ) {
return Complex( re + other.re, im + other.im );
}
int main() {
Complex a = Complex( 1.2, 3.4 );
Complex b = Complex( 5.6, 7.8 );
Complex c = Complex( 0.0, 0.0 );
c = a + b;
c.Display();
}
6.8, 11.2
En esta sección
Consulte también
Operadores integrados de C++, precedencia y asociatividad
Palabras clave