std::basic_ostream<CharT,Traits>:: operator=
From cppreference.net
<
cpp
|
io
|
basic ostream
|
protected
:
basic_ostream & operator = ( const basic_ostream & rhs ) = delete ; |
(1) | |
|
protected
:
basic_ostream & operator = ( basic_ostream && rhs ) ; |
(2) | (自 C++11 起) |
1)
复制赋值运算符受保护且被删除。输出流不满足
CopyAssignable
要求。
2)
移动赋值运算符交换基类的所有数据成员(除
rdbuf()
外)与
rhs
,如同通过调用
swap
(
*
rhs
)
实现。此移动赋值运算符受保护:仅由派生可移动输出流类
std::basic_ofstream
和
std::basic_ostringstream
的移动赋值运算符调用,这些派生类知晓如何正确移动赋值关联的流缓冲区。
参数
| rhs | - |
用于向
*
this
赋值的
basic_ostream
对象
|
示例
运行此代码
#include <iostream> #include <sstream> #include <utility> int main() { std::ostringstream s; // std::cout = s; // 错误:拷贝赋值运算符已被删除 // std::cout = std::move(s); // 错误:移动赋值运算符受保护 s = std::move(std::ostringstream() << 42); // 正确:通过派生类进行移动 std::cout << s.str() << '\n'; }
输出:
42
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 应用于 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 2067 | C++11 | td>1. 重载 (1) 的参数类型为
1. 添加
const
2. 移除 const |