jueves, 4 de junio de 2009

Sobrecarga de operadores

Sobrecarga de operadores

La sobrecarga de operadores permite redefinir ciertos operadores, como "+" y "-", para usarlos con las clases que hemos definido. Se llama sobrecarga de operadores porque estamos reutilizando el mismo operador con un número de usos diferentes, y el compilador decide cómo usar ese operador dependiendo sobre qué opera.

La sobrecarga de operadores sólo se puede utilizar con clases, no se pueden redefinir los operadores para los tipos simples predefinidos.

Los operadores lógicos && y || pueden ser sobrecargados para las clases definidas por el programador, pero no funcionarán como operadores de short circuit. Todos los miembros de la construcción lógica serán evaluados sin ning´n problema en lo que se refiere a la salida. Naturalmente los operadores lógicos predefinidos continuarán siendo operadores de short circuit como era de esperar, pero no los sobrecargados.

En el siguiente programa se demuestra la sobrecarga de operaciones

#include

class tresd{

int x,y,z; //coordenadas tridimensionales

public:

tresd operador+ tresd t);

tresd operador= tresd t);

void mostrar (void);

void asignar (int mx, int my, int mz);

}

//sobrecarga del operador +

tresd tresd :: operador+ (tresd t)

{tresd temporal;

temporal.x = x+t.x;

temporal.y = y+t.y;

temporal.z = z+t.z;

}

//sobrecarga del operador =

tresd tresd :: operador= (tresd t)

{x = x+t.x;

y = y+t.y;

z = z+t.z;

return *this;

}

//mostrar coordenadas x,y,z

void tresd :: mostrar (void)

{cout<

cout<

cout<

}

//asignar coordenadas

void tresd :: asignar (int mx, int my, int mz)

{x=m.x;

y=m.y;

z=m.z;

}

main (void)

{tresd a, b, c;

a.asignar (1,2,3);

b.asignar (10,10,10);

c=a+b;

c.mostrar ();

c=a+b+c;

c.mostrar ();

}

No hay comentarios:

Publicar un comentario