#include <iostream>
class Rational {
public:
Rational(double numerator = 0, double denominator = 1) :
m_n(numerator), m_d(denominator) {}
double numerator() const
{
return m_n;
}
double denominator() const
{
return m_d;
}
double value()
{
return (m_n / m_d);
}
const Rational operator* (const Rational& lhs)
{
return Rational(lhs.numerator() * m_n,
lhs.denominator() * m_d);
}
private:
double m_n;
double m_d;
};
const Rational operator* (const Rational& lhs, const Rational& rhs)
{
return Rational(lhs.numerator() * rhs.numerator(),
lhs.denominator() * rhs.denominator());
}
int main()
{
Rational oneHalf(1, 2);
Rational result = oneHalf * oneHalf;
result = oneHalf * 2;
std::cout << result.numerator() << " " << result.denominator() << std::endl;
result = 2 * oneHalf;
std::cout << result.numerator() << " " << result.denominator() << std::endl;
std::cout << "Hello World!\n";
}