Sobrecarga de operadores binarios (Programación)
Revisión del 13:12 17 nov 2012 de Majibacoa2 jc (discusión | contribuciones) (Página creada con '<div align="justify">{{Definición|Nombre= Sobrecarga de operadores binarios |imagen= |concepto=Se llama sobrecarga de operadores cuando reutilizando el mismo operador con un n...')
|
Sobrecarga de operadores binarios (Programación). Pueden ser sobrecargados de dos formas:
- Declarando una función miembro no estática que acepte un argumento
- Declarando una función no miembro (generalmente friend) que acepte dos argumentos.
Dependiendo de la declaración, si @ representa el operador binario, la expresión x @ y entre miembros de una clase C puede ser interpretada como cualquiera de las dos formas:
- x.operator@(y)
- operator@(x, y)
Si han sido declaradas ambas formas, se aplica la congruencia estándar de argumentos para resolver cualquier posible ambigüedad.
Sobrecarga del operador suma ( + )
En el ejemplo que sigue se utiliza la clase Vector, y sobrecargamos el operador suma binaria (+), de forma que pueda ser utilizada con tipos de dicha clase.
#include <iostream> using namespace std; class Vector { public: float x, y; Vector operator+ (Vector v) { // función-operador operator+ x = x + v.x; y = y + v.y; return *this; } };
int main () { // ========= float x = 5, y = 6; cout << "R = " << x + y << endl; // M.2: versión global Vector v1 = {1, 2}, v2 = {3, 4}; Vector v3 = v1 + v2; // M.4: versión sobrecargada cout << "Rx = " << v3.x << endl; cout << "Ry = " << v3.y << endl; } Salida: R = 11 Rx = 4 Ry = 6