应该重载operator =返回class和/ class

NoS*_*tAl 1 c++ operator-overloading return-by-reference

虽然谷歌搜索如何重载operator =我发现一些例子返回值 http://www.cprogramming.com/tutorial/operator_overloading.html
,而我的朋友很久以前就是C++ guru告诉我返回引用.另外,例如当我查看STL源代码时,我看到了类似的东西:

  vector&
  operator=(const vector& __x);
Run Code Online (Sandbox Code Playgroud)

那么这样做的正确方法是什么?

顺便说一句,如果你很好奇我的朋友告诉我,返回ref的原因是因为内置类型返回l值.

int x;
(x = 3) += 2;
// x is now 5.
Run Code Online (Sandbox Code Playgroud)

小智 5

除了特殊情况,你真的,真的知道你在做什么,它应该返回class&void.(而且大多数时候,返回void应该只是一个占位符,因为"我很懒,而且还没有确保返回class&有意义")

返回class是一个坏主意,因为它浪费时间和内存(它会复制!)在正常情况下用户不使用返回值,并且会彻底误导实际使用返回值的用户(并且仍然浪费时间复制).