Académique Documents
Professionnel Documents
Culture Documents
A L G O R I T M O S Y E S T R U C T U R A D E D AT O S 1
SOBRECARGA DE OPERADORES
La sobrecarga de operadores es similar a la sobrecarga
de funciones.
El operador sobrecargado no pierde su contenido
original.
Para sobrecargar un operador, se crea una función
operadora.
Un operador solo funciona con objetos de una clase.
Por lo general la función operadora es miembro de la
clase o una función amiga.
El valor devuelto de la función operadora es la clase
para la que se define.
Si es función amiga:
<tipo de dato> operator <op> (Lista parametros)
{
Sentencia(s);
}
Forma general:
Complejo Complejo::operator+(Complejo p)
{ this->real=real+p.real;
this->imag=imag+p.imag;
return *this;
}
void punto::MostrarPunto()
{ cout<<"("<<x<<","<<y<<","<<z<<")"<<endl;
}
punto punto::operator+(punto q)
{ punto temp;
temp.x=x+q.x;
temp.y=y+q.y;
temp.z=z+q.z;
return temp;
}
#include <iostream>
using namespace std;
// programa principal
int main()
{ misterio x(10,20,30);
for(int i=0;i<3;i++)
cout<<"\t"<<x[i];
cout<<endl<<endl;
}
#include <iostream>
using namespace std;
const int M=20; // Dato asumido para efectos de declaracion
class Operadores
{ private:
int N; // Indica el tamaño de la matriz cuadrada A
int A[M][M]; // Es la matriz
public:
Operadores(int);
void Generar();
void VerMatriz();
bool SumaElementosEsPar();
void operator++(); // Incrementa los elementos de la matriz
ALGORITMOS Y ESTRUCTURA DE DATOS 21
CONTINUACION…
void operator+(int k); //Incrementa los elementos de la matriz en k
void operator*(int b); //Multiplica los elementos de la matriz por b
friend void operator-(Operadores &p, int a); //Decrementa los elementos de la matriz en a
friend void operator/(Operadores &p,int b); //Decrementa los elementos de la matriz en b
void operator%(int); //Almacena como elementos el resto
}; // fin de la clase
int main()
{ Operadores q(3);int a=5,b=7,c=3,d=1,e=3;
q.Generar();cout<<"Matriz Original"<<endl; q.VerMatriz();
++q;cout<<"Matriz Original Incrementados en una unidad sus
elementos"<<endl; q.VerMatriz();
q+a;cout<<"Matriz incrementado en "<<a<<" veces"<<endl;
Operadores::Operadores(int m)
{ N=m;
}
void Operadores::Generar()
{ int k=1,i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{ while(k%2!=0)
{ A[i][j]=k; k++; }
k++;
}
}
void Operadores::VerMatriz()
{ for(int i=0;i<N;i++)
{ for(int j=0;j<N;j++)
cout<<A[i][j]<<"\t";
cout<<endl;
}
}
void Operadores::operator++()
{ for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
A[i][j]++;
}
void Operadores::operator+(int k)
{ for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
A[i][j]+=k;
}
void Operadores::operator*(int k)
{ for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
A[i][j]*=k;
}
bool Operadores::SumaElementosEsPar()
{ int i,j,s=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
s+=A[i][j];
if(s%2==0)
return true;
else
return false;
} ALGORITMOS Y ESTRUCTURA DE DATOS 28
CONTINUACION…