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...')
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Sobrecarga de operadores binarios (Programación)
Información sobre la plantilla
Concepto:Se llama sobrecarga de operadores cuando reutilizando el mismo operador con un número de usos diferentes, y el compilador decide como usar ese operador dependiendo sobre qué opera.

Sobrecarga de operadores binarios (Programación). Pueden ser sobrecargados de dos formas:

  1. Declarando una función miembro no estática que acepte un argumento
  2. 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:

  1. x.operator@(y)
  2. 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

Puede Consultar

Fuente