应该重载运算符=返回类或类
Should overloaded operator = be returning class& or class
在谷歌上搜索如何重载运算符时,我发现一些例子返回值http://www.cprogramming.com/tutorial/operator_overloading.html
,而我的一个朋友,很久以前就是C++大师,告诉我要返回参考。例如,当我查看STL源代码时,我看到了以下内容:
vector&
operator=(const vector& __x);
那么正确的方法是什么呢?
顺便说一句,如果你好奇的话,我的朋友告诉我,返回ref的原因是beause内置类型return l-value。
int x;
(x = 3) += 2;
// x is now 5.
除了您真的、真的知道自己在做什么的特殊情况外,它应该返回class&
或void
。(大多数时候,返回void
应该只是"我很懒,还没有抽出时间来确保返回class&
是有意义的"的占位符)
返回class
是个坏主意,因为在用户不使用返回值的正常情况下,它会浪费时间和内存(它会进行复制!),并且会彻底误导实际使用返回值(并且仍然会浪费时间进行复制)的用户。
在保存内存和时间时使用引用总是很好的。如果传递值,则必须创建新对象,必须调用复制构造函数。这在时间和内存方面都更昂贵。
所以总是通过引用传递它,除非您有非常强烈的必要通过值传递/返回它。
相关文章:
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 使用赋值运算符重载从类中返回jobject
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 重载更少,则运算符返回相反的布尔值
- 是否所有C++运算符都返回一些内容
- 使用重载 [] 运算符返回 std::map() 的可赋值
- 三元运算符在返回语句中给出意外的结果
- 为什么重载运算符可以返回其返回类型以外的其他内容?
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- 返回 bool 作为 CPP 中 bool 运算符 [] 中的值
- 运算符重载C++类中的引用返回
- 如何使用运算符+重载函数正确返回对象?
- 我的运算符重载没有在我的 int main 中返回?
- 在C++中,运算符 sizeof 返回什么数据类型?
- 为什么我的超载"+"运算符返回的总额错误?
- 为什么在通过引用返回运算符分配时取消引用'this'指针?
- 如何在C++中正确地返回运算符(*,/,-,+)
- C++ 函数返回 &&& 运算符
- 返回运算符类型=-引用或值