#include
using namespace std;
class Rational {
public:
Rational(int numerator=0, int denominator=1)
:itsNumerator(numerator)
,itsDenominator(denominator)
{}
int numerator() const {return itsNumerator;}
int denominator() const {return itsDenominator;}
/若为member函数,则Rational result2 = 2 * oneEighth;是无法通过编译的;
//因为int类型2没有相应的Rational class,没有运算后返回Rational这样的操作符
const Rational operator* (const Rational& rhs)
{
cout<<rhs.numerator()<<“/”<<rhs.denominator()<<endl;
return Rational(itsNumeratorrhs.numerator(), itsDenominatorrhs.denominator());
}
*/
private:
int itsNumerator;
int itsDenominator;
};
const Rational operator* (const Rational& rhs, const Rational& rhs1)
{
cout<<rhs.numerator()<<“/”<<rhs.denominator()<<endl;
cout<<rhs1.numerator()<<“/”<<rhs1.denominator()<<endl;
return Rational(rhs1.numerator() * rhs.numerator(), rhs1.denominator() * rhs.denominator());
}
int main() {
Rational oneEighth(1,8);
Rational oneHalf(1,2);
//Rational result = oneHalf * oneEighth;
Rational result1 = oneEighth * 2;
Rational result2 = 2 * oneEighth;//non member * 函数,会将2也隐士转换为Rational从而进行运算
cout << "test\n";
return 0;
}