Listing 1 (rational.h)

#include <stdio.h>

class rational
   {
public:
   rational() { }
   rational(long n) : num(n), denom(1) { }
   rational(long n, long d) : num(n), denom(d) { }
   rational &operator+=(rational r);
   rational &operator-=(rational r);
   rational &operator*=(rational r);
   rational &operator/=(rational r);
   rational operator+() { return *this; }
   rational operator-();
   rational operator++() { return *this += 1; }
   rational operator--() { return *this -= 1; }
   rational operator++(int);
   rational operator--(int);
   void put(FILE *);
private:
   long num, denom;
   void simplify();
   };

inline rational operator+(rational r1, rational r2)
   {
   return r1 += r2;
   }

inline rational operator-(rational r1, rational r2)
   {
   return r1 -= r2;
   }

inline rational operator*(rational r1, rational r2)
   {
   return r1 *= r2;
   }

inline rational operator/(rational r1, rational r2)
   {
   return r1 /= r2;
   }

/* End of File */