class Rational { public: Rational(int numerator = 0, int denominator =1) { n = numerator; d = denominator; } ~Rational() { } friend ostream& operator<< (ostream& os,const Rational& obj); private: int n , d; friend const Rational& operator* (const Rational& lhs, const Rational& rhs); }; ostream& operator<< (ostream& os,const Rational& obj) { os << "numerator = " << obj.n <<"denominator = " << obj.d; return os; } inline const Rational& operator* (const Rational& lhs, const Rational& rhs) { //返回局部对象的引用 Rational result(lhs.n*rhs.n , lhs.d*rhs.d); return result; //返回函数内部用new初始化的指针引用 //Rational *result = new Rational(lhs.n*rhs.n , lhs.d*rhs.d); //return *result; } int main() { double start = clock(),end(0); Rational r1(2,2),r2(3,3); cout << r1 * r2 << endl; end = clock(); double result = (end - start)/100000; cout.setf(ios::fixed); cout <<endl<< "3.00GHz's run time = " << result << "s."<<endl; return 0; }