运算符 T&() 还是运算符 T()?

Lin*_*gxi 6 c++ reference conversion-operator

在定义转换运算符时,定义有什么好处吗?

operator T() const;
Run Code Online (Sandbox Code Playgroud)

超过

operator T&();
operator const T&() const;
Run Code Online (Sandbox Code Playgroud)

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

R S*_*ahu 4

第二种方法肯定更好。

使用第一种方法时,调用代码需要复制返回的对象,这可能会很昂贵。

使用第二种方法,调用代码可以选择制作或不制作副本。

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

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

  • 另一方面,第二个可用于创建悬空引用。所以各有利弊。 (4认同)