c++ - 运算符 T&() 还是运算符 T()?

标签 c++ reference conversion-operator

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

operator T() const;

结束

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

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

最佳答案

第二种方法肯定更好。

对于第一种方法,调用代码需要来制作返回对象的拷贝,这可能很昂贵。

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

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

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

关于c++ - 运算符 T&() 还是运算符 T()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35077310/

相关文章:

c++ - 如何从 bool 转换为 void*?

c++ - 为什么 AF_INET 不能与 SOCK_STREAM 一起工作?

rust - 获取对 Vec 元素的可变引用或创建新元素并获取该引用

c++ - 使用模板转换运算符解决歧义

c++ - std::string 的转换运算符无法处理赋值

c++ - 在Visual Studio Code中进行侦错(C++程式)时无法看到 vector 或其他容器的内容(例如 map )

c++ - 关闭调用后,如何在 UDP recvfrom() 调用中获取返回值 0?

c# - 如何声明所需类型以避免 ".. Ambigious reference.."

c++ - 在这个 C++ 函数中更新 Fortran 中的两个数组

c++ - 强制类型转换为 'float'