std::basic_ostream<CharT,Traits>::basic_ostream
提供: cppreference.com
<tbody>
</tbody>
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 オブジェクトを構築し、 std::basic_ios::init を呼ぶことで基底クラスに初期値を代入します。
2) コピーコンストラクタは protected であり、削除されています。 出力ストリームはコピー可能ではありません。
3) ムーブコンストラクタは、 rhs から *this に、 rdbuf() を除いたすべての basic_ios のメンバをムーブするために、 basic_ios<CharT, Traits>::move(rhs) を使用します。 このムーブコンストラクタは protected です。 紐付けられているストリームバッファを正しくムーブする方法を知っているムーブ可能な出力ストリームクラス std::basic_ofstream および std::basic_ostringstream のムーブコンストラクタによって呼ばれます。
引数
| sb | - | 出力シーケンスとして使用するストリームバッファ |
| rhs | - | 初期化元の basic_ostream |
例
Run this code
#include <sstream>
#include <utility>
#include <iostream>
int main()
{
// ERROR: copy ctor is deleted
// std::ostream myout(std::cout);
// OK: shares buffer with cout
std::ostream myout(std::cout.rdbuf());
// ERROR: move constructor is protected
// std::ostream s2(std::move(std::ostringstream() << 7.1));
// OK: move ctor called through the derived class
std::ostringstream s2(std::move(std::ostringstream() << 7.1));
myout << s2.str() << '\n';
}
出力:
7.1