在谷歌搜索如何重载 operator = 时,我发现了一些例子
返回值 http://www.cprogramming.com/tutorial/operator_overloading.html
,而很久以前我的一个 C++ 大师 friend 告诉我返回引用。另外例如,当我查看 STL 源代码时,我看到了如下内容:
vector&
operator=(const vector& __x);
那么正确的做法是什么?
顺便说一句,如果你很好奇,我的 friend 告诉我返回 ref 的原因是因为内置类型返回左值。
int x;
(x = 3) += 2;
// x is now 5.
最佳答案
除了您真的,真的知道自己在做什么的特殊情况,它应该返回class&
或void
。 (而且大多数时候,返回 void
应该只是一个占位符,表示“我很懒惰,还没有抽出时间来确保返回 class&
有意义” )
返回 class
是个坏主意,因为在用户不使用返回值的正常情况下,它会浪费时间和内存(它会生成一个拷贝!),并且会彻底误导用户谁真正使用了返回值(并且仍然浪费时间制作拷贝)。
关于c++ - 应该重载 operator = 返回 class& 或 class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9598572/