SOBRECARGA DE OPERADORES
En programación orientada a objetos la sobrecarga se refiere a la posibilidad de tener dos o más funciones con el mismo nombre pero funcionalidad diferente. Es decir, dos o más funciones con el mismo nombre realizan acciones diferentes.
La sobrecarga de operadores es uno de los mecanismos que nos permite ampliar las capacidades de los lenguajes de programación orientados a objetos.
La sobrecarga de operadores es uno de los mecanismos que nos permite ampliar las capacidades de los lenguajes de programación orientados a objetos. En C++, la declaración y definición de una sobrecarga de operador es muy similar a la declaración y definición de una función cualquiera.
La sintaxis general para sobrecargar uno operador cualquiera es:
Tipo operador + (lista de parámetros);
En donde,
- Tipo se refiere al tipo regresado por el operador
- Operador es una palabra reservada y debe aparecer en toda declaración de sobrecarga de operadores
- El símbolo + está en representación de cualquier operador
- Lista de parámetros indica los argumentos sobre los que operara la función de sobrecarga.
Nota: en el caso de que el operador sobrecargado se hace para una clase específica la sintaxis se extiende de la siguiente manera:
Tipo nombre clase :: operador + (lista de parámetros);
SOBRECARGA DE MÉTODOS
Algunos métodos en una clase pueden tener el mismo nombre. Estos métodos deben contar con diferentes argumentos. El compilador decide qué método invocar comparando los argumentos. Se generara un error si los métodos tienen definidos los mismos parámetros.
OPERADORES AMIGOS
Un operador amigo, al igual que una función amiga, es aquel que aún cuando no es miembro de una clase tiene todos los privilegios de acceso a los miembros de dicha clase.
EJEMPLO
// Titulo..: programa sobrecarga01.cpp // Objetivo: demostración de sobrecarga de operadores // Autor...: Oscar E. Palacios #include <iostream> using namespace std; class Pareja { public: double a, b; // constructor parametrizado Pareja(const double a,const double b) { this->a = a; this->b = b; } }; // Sobrecarga del operador + Pareja& operator +(const Pareja &p1,const Pareja &p2) { return *(new Pareja(p1.a + p2.a, p1.b + p2.b) ); } int main() { Pareja A(50, 75 ); Pareja B(150, 175 ); Pareja C = A + B; cout << "A = " << A.a << ',' << A.b << "\n"; cout << "B = " << B.a << ',' << B.b << "\n"; cout << "C = " << C.a << ',' << C.b << "\n"; return 0; }
No hay comentarios:
Publicar un comentario