C++重载操作符之二(输入>>,输出<<,以及乘法)

来源:互联网 发布:知天命之年是什么意思 编辑:程序博客网 时间:2024/05/16 02:38


#include<iostream>using namespace std;class Rational{private:int numerator;int denominator;public:Rational(int n, int d) :numerator(n), denominator(d){}//乘法操作符既可以使用成员重载又可以使用友元重载的/*friend Rational operator *(const Rational &l, const Rational &r){return Rational((l.numerator*r.numerator) , (l.denominator*r.denominator));}*/const Rational operator *(const Rational &r){return Rational((this->numerator*r.numerator), (this->denominator*r.denominator));}//输入输出的操作符只能使用友元重载friend ostream & operator<<(ostream &o, Rational & r){o << r.numerator << "/" << r.denominator << endl;return o;}//修改了对象r,故用const修饰是错误的,会导致重载失败/*friend istream & operator>>(istream &i, const Rational & r){char c;i >> r.numerator >> c >> r.denominator;return i;}*/friend istream &operator>>(istream &i, Rational &r){ char c; i >> r.numerator >> c >> r.denominator; return i; }}; int main(){ Rational r1(1, 2);Rational r2(3, 5);Rational res = r1*r2;cout << "r1:" << r1 << "r2:" << r2;cout << "r1*r2=" << res << endl;cin >> r1 >> r2; cout << "r1:" << r1 << "r2:" << r2; res = r1*r2; cout << res << endl; return 0; }


0 0