vector&
operator=(const vector& __x);
那么这样做的正确方法是什么?
顺便说一句,如果你很好奇,我的朋友告诉我,返回ref的原因是因为类型返回l值。int x;
(x = 3) += 2;
// x is now 5.
答案 0 :(得分:5)
除了真的非常知道你在做什么的特殊情况之外,它应该返回class&
或void
。 (大多数时候,返回void
应该只是一个占位符,因为“我很懒,而且还没有确保返回class&
有意义”)
返回class
是一个坏主意,因为在用户不使用返回值的正常情况下,它会浪费时间和内存(它会复制!),并会彻底误导实际执行操作的用户使用返回值(仍然浪费时间制作副本)。
答案 1 :(得分:3)
是的,它应该返回一个引用自己。
答案 2 :(得分:1)
使用引用总是很好,因为内存和时间都被保存。如果你传递值必须创建新对象,则必须调用复制构造函数。这对于时间和内存来说都是更昂贵的。
所以总是通过引用传递它,除非你非常强烈地需要通过值传递/返回。