我最近一直在做一个分数类,重载运算符时我没有得到预期的结果,我不知道为什么。希望有人可以帮助阐明一些光。我试图只包含相关代码。
const fraction fraction::operator* (fraction frac)
{
return fraction(frac.numerator * numerator, frac.denominator * denominator);
}
const fraction fraction::operator* (int num)
{
return fraction(numerator*num, denominator);
}
fraction& fraction::operator= (const fraction &rightSide)
{
return *this;
}
这些操作是我发现工作正常的操作(其中 frac# 是一个分数对象):
frac1 = frac2;
frac3 = frac4 * 2;
frac5 = frac6 * frac7;
上述操作按预期工作,但以下操作使 frac8 与初始化时一样:
fraction frac8(4, 5); // Initializes a fraction, setting numerator = 4, denominator = 5
frac8 = frac8 * 3; // This doesn't quite work, leaving frac8 with the original numerator/denominator
我只是不明白为什么 frac3 = frac4 * 2 有效,但 frac8 = frac8 * 3 无效。有任何想法吗?在赋值运算符中使用 const 关键字我发现不是解决方案。