miércoles, 14 de noviembre de 2012

Sobrecargando Operadores ">>" y "<<" en C++

Basicamente cuando sobrecargamos un operador estamos creando una funcion, porque ellos se comportancomo tales. Debemos estar claros de que ya C++ tiene la mayoria de sus operados sobrecargados ya que cada vez que usamos los operados +,-,*,/ ellos tienen un comportamiento.

La bondad de sobrecargar los operadores es que podemos agregarle nuevos comportamientos a estos y en muchos casos ahorrarnos codigo a la hora de implementar. Aqui les dejo un ejemplo sencillo de como sobrecargar operadores



#include&ltiostream.h&gt
#include&ltconio.h&gt                                   
#include&ltstdio.h&gt                                   
int tamano;                                      

class vector
{
int *v; // Es un puntero, los punteros en su estructura tambien son Arrays (Arreglos)
public:
vector();
vector(int *x);
friend ostream& operator &lt&lt(ostream&, vector&);
friend istream& operator &gt&gt(istream&, vector&);
};

vector::vector()
{
cout&lt&lt"ingrese el tamanio del vector\n";
cin&gt>tamano;
v=new int[tamano];//Aqui estamos declarando dinamicamente el vector
for(int i=0; i<tamano;i++){
v[i]=0; }
}

istream &operator&gt&gt(istream &entra, vector &x)
{
 for(int i=0; i<tamano;i++)
    {
 entra&gt&gtx.v[i];
 //entra&lt<x; 
    /*Si quitan esta linea de los comentarios se 
    daran cuenta que cada vez que entra al ciclo repetitivo 
    la instruccion entra&lt&ltx hace el llamado
    a la funcion que acabamos de sobrecargar (&lt&lt)*/
   }
return (entra);
}

ostream& operator&lt&lt(ostream &sale, vector &x){
 for(int i=0; i<tamano;i++){
 sale&lt&ltx.v[i]&lt&lt" ";
 }
return sale;
}

int main()
{

vector h;
cout&lt&lt"introduzca los valores del vector\n";
cin&gt>h;     
cout&lt&lt"el valor del vector es..\n";
cout&lt<h;
getch();
return 0;
}



0 comentarios:

Publicar un comentario