为什么流运算符 return 在 C++ 中引用?

Why do stream operators return references in C++?

我知道索引运算符实现通常 return 引用以便可以设置和检索值,但为什么要使用流?

因此您可以将它们链接在一起。

cout << "hello" << "how are you";

之所以可行,是因为 cout << "hello" returns 对 cout 的引用,以便 << "how are you" 知道将自己放在那里。

大多数运营商,例如 +=,也这样做。

流不支持复制或赋值,因此任何传递或returns流必须使用指针或引用。您不能在指针上使用重载运算符(不取消引用它),因为它们会尝试将内置运算符应用于指针本身。

因此,返回引用是支持运算符链接的唯一选择。

流不支持复制或赋值,因为它们没有持久状态。就其本质而言,传递给它们的数据只是缓冲而不是保留。流的全部意义在于将其内容刷新到其他内容,同时在它为空时阻止接收端的程序执行。