课程
/后端开发
/C++
/C++远征之模板篇
// +号运算符重载
Coordinate &operator+(Coordinate coor)
和Coordinate &operator+(Coordinate &coor)
编译运行都通过,但是我总觉得第一种不对啊
2015-12-05
源自:C++远征之模板篇 4-7
正在回答
除了onemoo说的3点 +运算是不改变对象本身的 所以最好声明const的operator+函数 不然只有右操作数能接收常量 左操作数确不行 一般都是这么声明的 T operator+(const T&)const; 下面是一个向量加法的实现(+运算和坐标相同)
Vector2 Vector2::operator+(const Vector2 &other)const{ return Vector2(x+other.x,y+other.y); }
重载+运算符最好直接返回值,不要用引用类型的返回值。
第一种方式的coor参数是值传入的,传参时会构造一个临时变量,这会带来运行时的额外开销。
第二种方式就避免了构造临时变量的运行开销。 不过最好将参数声明为const Coordinate &coor,避免右侧操作数被误修改。
举报
本C++教程力求即学即会,所有知识以实践方式讲解到操作层面