在运算符重载中返回引用的重要性是什么?

时间:2009-06-04 07:19:41

标签: c++

任何人都可以解释为什么在重载运算符时需要返回引用 例如

friend std::ostream& operator<< (std::ostream& out, const std::string& str)

3 个答案:

答案 0 :(得分:7)

在这样的例子中,对操作员进行“链接”工作:

std::cout << "hello," << " world";

如果operator<<()的第一个(最左边)使用没有返回引用,则不会有对象要求第二次使用该运算符。

答案 1 :(得分:4)

它用于操作符链接(如果你返回一个指针,你必须取消引用它)并且不要制作一个潜在的庞大且昂贵的对象副本(如果你返回一个值),如果它甚至可以做如此。

答案 2 :(得分:3)

Scott Meyers在Effective C ++中提出的一般规则是,当有疑问时,“像ints那样做”。例如,operator =应该返回一个引用,所以这样的代码可以工作:

MyClass A, B, C;
A = B = C = 0;