运算符T&()或运算符T()?

时间:2016-01-29 05:09:43

标签: c++ reference conversion-operator

在定义转换运算符时,定义

是否有任何优势
operator T() const;

operator T&();
operator const T&() const;

假设我不关心返回值而不是引用的潜在性能提升。

2 个答案:

答案 0 :(得分:3)

我认为这取决于具体情况。第一种方法返回一个新对象,可以修改该对象而不改变原始对象。第二种方法返回对现有对象的引用。如果更改此对象,则还将更改原始对象。

你必须决定哪一个是你的权利;没有普遍的优势。

答案 1 :(得分:3)

第二种方法肯定更好。

使用第一种方法,调用代码 required 来制作返回对象的副本,这可能很昂贵。

使用第二种方法,调用代码可以选择是否复制。

当您负责一个类/库时,您不希望对没有解决方法的性能瓶颈负责。

第二种方法的一个主要缺点是调用代码可能留有悬空指针/引用。为了帮助您的用户,您必须清楚地记录返回的引用有效期。希望您的用户能够留意并做正确的事。

相关问题