为什么在 main 中的对象使用 Add() 函数后 Print() 函数没有正确更新?
int main()
{
Rational myRational(3,5);
myRational.Print(); //Displays 3/5 as expected
myRational.Add(2);
myRational.Print(); //Displays 3/5 instead of 13/5
return 0;
}
//from Rational.cpp
//Overloaded constructors
Rational::Rational() :
num(0),
denom(1)
{
}
Rational::Rational(int n) :
num(n),
denom(1)
{
}
Rational::Rational(int n, int d) :
num(n),
denom(d)
{
}
Rational Rational::Add(const Rational& r1) const
{
int numerat = num * r1.getDenominator() +
denom * r1.getNumerator();
int denomin = denom * r1.getDenominator();
return Rational(numerat, denomin);
}
void Rational::Print()
{
cout << num << "/" << denom <<endl;
}
调试代码时,Add 函数按预期返回值 13 和 5,正确的构造函数也会返回。不幸的是,Print() 函数保留了原始分数而不是新值。