// rational-overload.h // header file containing // class declaration for // RationalNumber class // implementation in rational-overload.cc // Problem 8.17 in D&D #ifndef rational_H #define rational_H #include class RationalNumber { friend ostream &operator<<(ostream &, const RationalNumber &); friend istream &operator>>(istream &, RationalNumber &); public: // default constructor RationalNumber(int = 0, int = 1); // overload operators for "normal" operation RationalNumber operator+(const RationalNumber&); RationalNumber operator-(const RationalNumber&); RationalNumber operator*(const RationalNumber&); RationalNumber operator/(const RationalNumber&); // overload relational operators for "normal" operation int operator>(const RationalNumber&) const; int operator<(const RationalNumber&) const; int operator>=(const RationalNumber&) const; int operator<=(const RationalNumber&) const; int operator==(const RationalNumber&) const; int operator!=(const RationalNumber&) const; private: int numerator; int denominator; void reduction(void); }; #endif