C++ 运算符重载 的参数问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 16:31:48
Complex operator +(Complex &c);

Complex operator +(Complex c);

参数 &c 和 c 的联系和区别 ?为什么要加一个& ?

&c的意思是传实例对象c的引用。
当我们以传引用的方式传递对象当作函数参数的时候,对象本身并不会复制出另一份对象----复制的是对象的地址。函数中对该对象的任何操作,都相当于对传入对象进行间接操作。
使用&的理由之一(也是最重要的原因)希望得以直接对所传入的对象进行修改。
其二是位了减少大量复制的负担,仅仅复制地址就可以了。
然而在本例中,作为重载运算符并不需要更改对象c的值,所以使用&就没有什么必要了,范围为了放心的使用c,而不改变它的值的话可以考虑加上const.因此使用传引用的第一个原因就站不住脚了。那么使用&的邻一个原因只能是基于效率的考虑了。即有可能是第二个原因,如果c对象不是他别大的话(比如vector,array类型)就可以考虑不用&。我猜测此例中楼主的complex class是指的复数吧。对象数值不大,那就完全没有必要使用&了。