必须返回对象时,别妄想返回一个reference

例如有以下例子
const Rational operator*(const Rational& lhs,const Rational& rhs)
{
static Rational result;
result=…;
return result
}
bool operator==(const Rational& lhs,
const Rational& rhs);
Rational a,b,c,d;

if((a
b)(cd)){
}else
{
}
不管a,b,c,d的值是什么,(a
b)
(cd)都为true,我们将代码写成等价的函数表达式分析一下
if(operator==(operator
(a,b),operator*(c,d)))
在operator=调用之前,两个operator已经开始调用了,虽然a,b,c,d为不同的值,但函数里面的Rational result是静态的,所以值一直相同。
这种情况下如何处理呢,我们可以返回一个新的对象例如
inline const Ration operator
(const Rational&lhs,const Rational&rhs)
{
return Rational(lhs.nrhs.n,lhs.dlhs*d);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值