我为我的 Rational 类定义了 operator -= 的重载:
rational.hh:
class Rational {
public:
Rational(int numerator, int denominator) : numerator(numerator), denominator(denominator)
{ }
int getNumerator() const;
int getDenominator() const;
Rational& operator-=(const Rational& bar);
private:
int numerator, denominator;
rational.cc:
Rational& Rational::operator-=(const Rational& subtracted) {
Rational result((*this).getNumerator()*subtracted.getDenominator() - (*this).getDenominator()*subtracted.getNumerator(), (*this).getDenominator()*subtracted.getDenominator());
return *this;
}
代码编译时没有警告,但这段代码不会改变 r 的值:
Rational r(1, 1);
r -= Rational(1, 2);
任何想法为什么?