【发布时间】:2010-09-30 18:01:21
【问题描述】:
嘿,我想知道这两个运算符定义之间的区别:
1:
class Rational{
//...
public:
//...
Rational operator -() const{ return Rational(-t,b);}
//...
};
2:
class Rational{
//...
public:
//...
friend Rational operator -(const Rational& v) {return Rational(-t,b);}
//...
};
据我了解,用于:
Rational s = -r
r.operator-() // should happen
希望对差异进行一些解释,谢谢!
【问题讨论】:
-
这些声明在类中吗?
-
您的 #2 甚至不需要成为朋友 - 它不会访问 Rational 的任何私人成员。它可以(并且应该)完全在类之外声明/定义。
标签: c++ operators operator-overloading unary-operator