【发布时间】:2012-08-17 07:48:47
【问题描述】:
我最近一直在制作分数类,重载运算符时没有得到预期的结果,我不知道为什么。希望有人可以帮助阐明一些光。我试图只包含相关代码。
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 关键字我发现不是解决方案。
【问题讨论】:
-
好吧,现在你的赋值运算符被定义为什么都不改变......你可能想要分配给一些成员变量。 :)
标签: c++ overloading variable-assignment operator-keyword