std::basic_ostream<CharT,Traits>::basic_ostream
< cpp | io | basic ostream
explicit basic_ostream( std::basic_streambuf<CharT, Traits>* sb ); |
(1) | |
protected: basic_ostream( const basic_ostream& rhs ) = delete; |
(2) | (C++11 起) |
protected: basic_ostream( basic_ostream&& rhs ); |
(3) | (C++11 起) |
1) 构造 basic_ostream
对象,通过调用 basic_ios::init(sb) 赋初值给基类。
2) 复制构造函数被删除。输出流不可复制。
3) 移动构造函数用 basic_ios<CharT, Traits>::move(rhs)
从 rhs
移动所有 basic_ios ,除了 rdbuf()
到 *this
中。此移动构造函数受保护:它为可移动输出流类 std::basic_ofstream 和 std::basic_ostringstream 的移动构造函数所调用,它们知道如何正确地移动关联的流缓冲。
参数
sb | - | 用作输出序列的流缓冲 |
rhs | - | 初始化来源的 basic_ostream |
示例
运行此代码
#include <sstream> #include <utility> #include <iostream> int main() { // 错误:复制构造函数被删除 // std::ostream myout(std::cout); // OK :与 cout 共享缓冲 std::ostream myout(std::cout.rdbuf()); // 错误:移动构造函数受保护 // std::ostream s2(std::move(std::ostringstream() << 7.1)); // OK :通过导出类调用移动构造函数 std::ostringstream s2(std::move(std::ostringstream() << 7.1)); myout << s2.str() << '\n'; }
输出:
7.1