为了账号安全,请及时绑定邮箱和手机立即绑定

输入的参数问题

// +号运算符重载

Coordinate &operator+(Coordinate coor)

和Coordinate &operator+(Coordinate &coor)

编译运行都通过,但是我总觉得第一种不对啊

正在回答

2 回答

除了onemoo说的3点 +运算是不改变对象本身的 所以最好声明const的operator+函数 不然只有右操作数能接收常量 左操作数确不行 一般都是这么声明的   T operator+(const T&)const;  下面是一个向量加法的实现(+运算和坐标相同)

Vector2 Vector2::operator+(const Vector2 &other)const{
    return Vector2(x+other.x,y+other.y);
}


0 回复 有任何疑惑可以回复我~

重载+运算符最好直接返回值,不要用引用类型的返回值。

第一种方式的coor参数是值传入的,传参时会构造一个临时变量,这会带来运行时的额外开销。

第二种方式就避免了构造临时变量的运行开销。 不过最好将参数声明为const Coordinate &coor,避免右侧操作数被误修改。

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之模板篇
  • 参与学习       91156    人
  • 解答问题       318    个

本C++教程力求即学即会,所有知识以实践方式讲解到操作层面

进入课程

输入的参数问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信