0
嘿,我想知道這兩個運營商定義的區別:運算符重載在C++(有和沒有朋友的)
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
想要一些explenation的區別,謝謝!
這些聲明是否在類中? – 2010-09-30 18:04:42
您的#2甚至不需要成爲朋友 - 它不會訪問Rational的任何私人成員。它可以(也應該)完全在課堂之外聲明/定義。 – 2010-09-30 20:35:24