//先看看下面这个例子 class Rational{ public: Rational(int num, int denu) :numirator(num), denumirator(denu); const Rational operator*(const Rational & lhs, const Rational & rhs);//注意这里的返回类型 private: int numirator; int denumirator; };
Rational & operator(const Rational & lhs, const Rational & rhs) { Retional result = new Rational(lhs.numirator + rhs.numirator, lhs.denumirator * rhs.denumirator); return result; }
const Rational & operator*(const Rational & lhs, const Rational & rhs) { static Rational result; Rational = Ratioanl(lhs.numirator * rhs.numirator, lhs.denumirator * rhs.denumirator); return result; }
首先,加入static可定会对多线程的情况带来一些麻烦,再者看看下面这样的代码:
Rational a, b, c, d; if(a * b == c * d); //相当于if(operator*(a, b) == operator*(c, d))
条款21:必须返回对象的时候,不要妄想使其返回reference
原文:http://www.cnblogs.com/-wang-cheng/p/4858676.html