Sobrecarga De Operadores

Páginas: 5 (1043 palabras) Publicado: 13 de julio de 2015
Sobrecarga de funciones
Una función sobrecargada es una función que tiene más de una definición.
Estas funciones se diferencian en el número y tipo de argumentos, pero también hay funciones sobrecargadas que devuelven tipos distintos.
Sobrecarga se refiere al uso de un mismo nombre para múltiples significados de un operador o una función.
Dado el énfasis del concepto de clase, el uso principalde la sobrecarga es con las funciones miembro de una clase. Cuando más de una función miembro con igual nombre se declara en una clase, se dice que el nombre de la función está sobrecargado en esa clase. El ámbito del nombre sobrecargado es el de la clase.
La sobrecarga de funciones amigas es similar a la de función miembro, con la única diferencia de que es necesaria la palabra reservada friendal igual que en la declaración de cualquier función amiga.
Ejemplo sobrecarga de funciones:
#include
#include
using std::cout;
using std::cin;
using std::endl;
int cubo (int); //prototipo de función sobrecargada
double cubo(double);//prototipo de función sobrecargada
main()
{
int ix = 5;
double dx = 1.5;
cout << "El cubo de "<< ix << " es "< //elcompilador al ver un valor int elige la función
cout << "El cubo de " << dx << " es " < //la llamada es igual con un valor double.
system("pause");
}
int cubo (int y ) //Función sobrecargada para valores int
{
return y*y*y;
}
double cubo (double y) //Función sobrecargada para valores double
{
return y*y*y;
}









Sobrecarga de operadores
La sobrecarga de operadoreses 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. El ejemplo más sencillo de una sobrecarga de operadores nos lo da el lenguaje mismo, es decir, en una operación aritmética (por ejemplo, unasuma ) el compilador determina el tipo de operación requerida de acuerdo con el tipo de datos involucrados. Vamos a suponer que se tienen las variables: int A, B; double X, Y; int R; y las siguientes instrucciones:
R = A + B;
R = A + X;
R = X + Y;
Ahora bien:
En el primer caso el compilador determina que el tipo de operación requerida es una suma de enteros debido a que los dos miembros ( A y B )de la suma son del tipo entero.
En el segundo caso parece ser que las cosas no son tan claras, ya que en este los miembros involucrados en la suma son de tipos diferentes, sin embargo el compilador determinará el tipo de operación requerida y depositará en el resultado ( R )el valor resultante redondeado.
En el tercero y último de los casos el compilador determina que el tipo de operaciónrequerida es una suma de reales debido a que los dos miembros ( X e Y ) de la suma son del tipo double. También en este caso el resultado de la suma se redondea antes de ponerlo en R

Para poner un ejemplo práctico de sobrecarga del operador de suma ( + ) vamos a considerar el caso de la clase pareja mostrada en seguida:
class Pareja {
public:
double a, b;

// constructor parametrizadoPareja(const double a,const double b)
{
this->a = a;
this->b = b;
}
};

int main()
{
Pareja A(50, 75 );
Pareja B(150, 175 );
Pareja C = A + B;

return 0;
}

Si se trata de compilar el programa anterior descubrirá que el compilador se queja, es decir, el compilador no sabe que hacer en el caso de la instrucción Pareja C = A + B; aunque es evidente que se trata dela declaracion del objeto C y que el mismo se espera que sea igual a la suma de los objetos A y B. El error se debe al hecho de que el tipo Pareja es en realidad una clase y no un tipo primitivo y, en consecuencia, se debe de adiestrar al mismo compilador para que éste sepa de que manera hara la suma de dos objetos del tipo Pareja. Así, para solucionar el error vamos a sobrecargar el operador +...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Operadores Sobrecargados
  • Sobrecarga de operadores de flujo
  • Sobrecarga de operadores
  • Sobrecargas de operador
  • Sobrecarga de métodos y operadores.
  • sobrecargo
  • Sobrecargos
  • sobrecargo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS