任何人都可以解释为什么在重载运算符时需要返回引用 例如
friend std::ostream& operator<< (std::ostream& out, const std::string& str)
答案 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;