Complex operator+(Complex c1,Complex c2)和Complex &operator+(const &Complex c1,const Complex &c2)这两个表达方式有什么不同

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/25 19:10:38

Complex operator+(Complex c1,Complex c2)和Complex &operator+(const &Complex c1,const Complex &c2)这两个表达方式有什么不同
Complex operator+(Complex c1,Complex c2)和Complex &operator+(const &Complex c1,const Complex &c2)
这两个表达方式有什么不同

Complex operator+(Complex c1,Complex c2)和Complex &operator+(const &Complex c1,const Complex &c2)这两个表达方式有什么不同
第一个表达式的参数是值,返回值是值;
第二个表达式的参数是引用,返回值是引用;
因为您重载的是加号,一般这种操作符在c++里最好写成全局函数,因为如果写成成员函数的话就不能满足加法交换律了.
因为函数被要求实现为全局函数,所以返回值最好是值类型,如果使用引用类型并且不作出更多的修改的话,您的返回值会是错误的,因为您引用了一个局部变量.
作为参数而言,只是效率的问题,传递类的引用比传递类的值更快捷.所以最后推荐的写法是:
Complex operator+(Complex &lhs, Complex &rhs);
lhs和rhs分别代表的是:left hand side(左手边的), right hand side(右手边的)