为什么流运算符在C++中返回引用
Why do stream operators return references in C++?
我知道索引运算符实现通常会返回引用,以便可以设置和检索值,但是为什么流呢?
所以你可以把它们链接在一起。
cout << "hello" << "how are you";
工作是因为cout << "hello"
返回对 cout 的引用,以便<< "how are you"
知道将自己放在那里。
大多数运算符,例如 +=
,也这样做。
流不支持复制或分配,因此传递或返回流的任何内容都必须使用指针或引用。您不能在指针上使用重载运算符(而不取消引用它),因为它们会尝试将内置运算符应用于指针本身。
因此,返回引用是支持运算符链接的唯一选择。
流不支持复制或分配,因为它们没有持久状态。就其本质而言,传递到它们中的数据只是缓冲而不是保留。流的全部意义在于将其内容刷新到其他内容中,同时在接收端为空时阻止程序执行。
相关文章:
- 寿命延长从函数返回引用
- 了解C++如何返回引用并绑定到引用
- 返回引用实例和非引用实例(return mystr & vs mystr)之间的区别是什么?
- 从类返回引用向量
- 使用unique_ptr并返回引用,或者我应该使用shared_ptr并在需要时制作副本
- 混淆C++从函数返回引用
- 两个相同的重载运算符[]一个返回引用
- 为什么向量的.at()成员函数返回引用而不是迭代器
- C++使用和返回引用
- 返回 T 引用的 Const 函子禁止赋值
- 返回引用是否也会延长其生存期?
- 如何返回引用,然后递增迭代器
- 如果使用返回引用的函数初始化"auto"var,为什么它不声明引用类型?
- 我是否需要将 ref 与 make_pair 一起使用才能返回引用?
- 在 vector::at 返回引用后进行更改
- 为什么PyImport_ImportModule返回引用计数为 3 而不是 1 的 PyObject*
- 超出返回引用的单一实例生存期
- Boost.Python 返回引用现有 c++ 对象的 python 对象
- C++ 运算符 += 重载返回引用
- 如何声明接受转发引用并返回引用或副本的函数模板