Complex operator+(Complex c1,Complex c2)和Complex &operator+(const &Complex c1,const Complex &c2)这两个表达方式有什么不同
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/25 06:53:48
xSˎAV !KA Yҍ40`g <膟[]cbteU:snU7DʗJ2\*xD
3)w#6Jfs> WPdm}bܳ[m6Ld-LLX`:cF@DwimJMm5hup;u ʿ%5[sҞ.1V4;,.Cԅ<w~RնGh@ʴ-^]. *{NI| iE[?Dd;ڒpBj/O&j;ZM&Xc&suP뎤Hĵ]LPQd"e1xTD{TĔu;wSW+3"pj?
ǧgϞ{=d
&/{yۙ2,Xbwn;(2@)$̦#ɰ%樲o
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(右手边的)