<分区>
我已经为我的 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);
有什么想法吗?