qq_45651829
氯的平方
采纳率64.7%
2020-08-02 11:18

C++关于类中重载运算符的问题

已采纳
class Type{
    int i;
public:
    friend const Type operator-(const Type& a)
    {
        return Type(-a.i);
    }

    friend Type& operator-(Type& a)
    {
        a.i *= -1;
        return a;
    }
}; 

为什么书上的代码 要将这种一元的运算符重载(+除外)用新创建一个类对象 再按值进行返回的方式来重载呢,是为了使用临时对象语法吗还是其他的原因呢?
还有就是可不可以简单的理解为如果是创建一个新的对象来返回就按照值进行返回,没有创建新对象进行返回(返回传入参数或者this指针的解引用这种)就简单记忆为按照引用进行返回呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 8月前

    必须考虑如下语意
    b = a - a
    这种情况,如果你不返回新对象,而是直接在当前对象上减,结果就不对了。

    点赞 评论 复制链接分享