作业帮 > 综合 > 作业

Complex operator+(Complex c1,Complex c2)和Complex &operator+(

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 23:50:26
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(右手边的)
再问: 高手~~可不可以具体说明一下它们的不同~~ 我们的作业得交这个小论文~~
再答: 传值的时候需要付出复制整个对象的代价,所以传引用比较高效。 但是因为你重载的是+操作符,所以要满足交换律,所以必须定义为全局函数。所以你的返回值不能为引用,因为那样的话你的返回值就会引用到局部变量。。。而那个局部变量在函数执行完之后就被释放了。。。 懂了??
再问: 额。。。不懂。。。 我没学过这C++ 。。。。 不知道怎么写