Esta es la clase que definí (su cabecera) y como se puede ver puedo sobrecargarlos interna y externamente
Código C++:
Ver original#ifndef _FECHA_H_
#define _FECHA_H_
#include <iostream>
class Fecha {
public:
Fecha (const int dia = 0, const int mes = 0, const int anno = 0);
Fecha (const Fecha& );
Fecha (const char* );
class Invalida {
public:
Invalida(const char* texto) { razon_ = texto; }
const char* por_que() { return razon_; }
private:
const char* razon_;
};
int anno() const { return anno_; }
int mes() const { return mes_; }
int dia() const { return dia_; }
//OPERADORES ARITMETICOS
Fecha operator++ (const int); // Operador postfijo
Fecha operator-- (const int); // Operador postfijo
Fecha& operator++ ();
Fecha& operator-- ();
Fecha& operator+= (const int);
Fecha& operator-= (const int);
Fecha operator= (const Fecha&);
/* //OPERADORES DE COMPARACION
bool operator == (const Fecha&);
bool operator != (const Fecha&);
bool operator < (const Fecha&);
bool operator <= (const Fecha&);
bool operator > (const Fecha&);
bool operator >= (const Fecha&);*/
char* cadena() const;
private:
int dia_, mes_, anno_;
static const int AnnoMinimo = 1600;
static const int AnnoMaximo = 2200;
bool Bisiesto() const;
bool FechaValida() const throw(Fecha::Invalida);
};
std::ostream& operator << (std::ostream &o, const Fecha &a);
Fecha operator + (const int, const Fecha&);
Fecha operator + (const Fecha&, const int);
Fecha operator - (const int, const Fecha&);
Fecha operator - (const Fecha&, const int);
//OPERADORES DE COMPARACION
bool operator == (const Fecha&, const Fecha&);
bool operator != (const Fecha&, const Fecha&);
bool operator < (const Fecha&, const Fecha&);
bool operator <= (const Fecha&, const Fecha&);
bool operator > (const Fecha&, const Fecha&);
bool operator >= (const Fecha&, const Fecha&);
#endif