C++ permite sobrecargar los operadores escribiendo una función con la palabra reservada operator, seguida por el simbolo del operador que va sobrecargar por ejemplo : el operador de suma (+).
Para utilizer un operador sobre objetos de clases, el operador debe sobrecargarse, existen dos excepciones en operadores que no necesitan sobrecargarse el de asignacion (=) y el operador de direccion &.
No se pueden crearse operadores nuevos, un operador unario no puede cambiarse por un operador binario y un operador binario a operador unario.
El operador debe ser miembro de una clase.
Ejemplo:
Codificacion CodeBlocks
#include <iostream>
#include <iomanip>
using namespace std;
class Fecha
{
private:
int dia;
int mes;
int anio;
public:
Fecha(int =9,int =9,int =1900);
void estFecha(int,int,int);
void asignarDia(int);
void asignarMes(int);
void asignarAnio(int);
int obtenerDia();
int obtenerMes();
int obtenerAnio();
Fecha operator+(int);
void mostrarFecha();
};
Fecha::Fecha(int d, int m,int a)
{
dia=d;
mes=m;
anio=a;
}
void Fecha::estFecha(int d,int m,int a)
{
dia=d;
mes=m;
anio=a;
}
void Fecha::asignarDia(int d)
{
dia=d;
}
void Fecha::asignarMes(int m)
{
mes=m;
}
void Fecha::asignarAnio(int a)
{
anio=a;
}
int Fecha::obtenerDia()
{
return dia;
}
int Fecha::obtenerMes()
{
return mes;
}
int Fecha::obtenerAnio()
{
return anio;
}
Fecha Fecha::operator+(int dias)
{
Fecha aux;
aux.dia=dia+dias;
aux.mes=mes;
aux.anio=anio;
while(aux.dia>30)
{
aux.mes++;
aux.dia -=30;
}
while(aux.mes>12)
{
aux.anio++;
aux.mes -=12;
}
return aux;
}
void Fecha::mostrarFecha()
{
cout<<setw(2)<<dia<<"/"<<setw(2)<<mes<<"/"<<setw(4)<<anio<<endl;
}
int main()
{
Fecha f1(20,1,2010),f2;
cout<<"Fecha es : ";
f1.mostrarFecha();
f2=f1 + 366;
cout<<"ahora la fecha es : ";
f2.mostrarFecha();
return 0;
}
No hay comentarios:
Publicar un comentario