【发布时间】:2012-11-30 06:57:09
【问题描述】:
在运算符重载期间始终编写我们自己的复制构造函数是否安全?
Complex Complex::operator+(const Complex& other)
{
Complex local ;
local.result_real = real + other.real;
local.result_imaginary = imag + other.imag;
return local ;
}
大多数时候我都看到了上述格式,而不是将其作为参考返回。
我们可以采用拇指规则吗 1-始终通过引用传递函数参数。 2- 总是通过引用返回对象。
在运算符重载中是否有任何特殊情况,我们必须仅按值返回对象?
【问题讨论】:
-
您的意思是:永远不要通过引用返回(除非您确切知道自己在做什么)。
-
这取决于您重载的运算符,请参阅Operator overloading,它将回答您的所有问题等等。
-
通过引用返回本地将导致未定义的行为。您可以通过引用返回对象的唯一情况是:1)您通过方法返回当前对象。 2) 你创建一个新对象并返回它的引用,在某处处理它的删除。
标签: c++