#ifndef FRACCION_H #define FRACCION_H #include typedef long long entero; class Fraccion { private: entero numerador; entero denominador; public: /// Constructor por defecto y constructor de conversion Fraccion(entero numerador = 0, entero denominador = 1); /// Destructor ~Fraccion(); // La relacion de amistad permite a los operadores sobrecargados como funciones libres acceder // a los miembros privados y protegidos de los objetos Fraccion friend std::ostream& operator<<(std::ostream& salida, const Fraccion& fraccion); friend std::istream& operator>>(std::istream& entrada, Fraccion& fraccion); friend Fraccion operator+(const Fraccion& a, const Fraccion& b); }; /// Permite cout << f1 << f2 << ... std::ostream& operator<<(std::ostream& salida, const Fraccion& fraccion); /// Permite cin >> f1 >> f2 >> ... std::istream& operator>>(std::istream& entrada, Fraccion& fraccion); /// Permite f1 + f2 /// Permite f1 + 13 /// Permite 13 + f2 /// Nunca se invoca con dos tipos primitivos como: 13 + 2 Fraccion operator+(const Fraccion& a, const Fraccion& b); #endif // FRACCION_H