private: ios_base( const ios_base& );
public: ios_base( const ios_base& ) = delete;
1) The copy constructor is deleted: streams are not copyable.
2) The default constructor is protected: only derived classes may construct
std::ios_base. The internal state is undefined after the construction. The derived class must call
basic_ios::init() to complete initialization before first use or before destructor; otherwise the behavior is undefined.
The same applies to the constructors of the next class in the I/O hierarchy,
std::basic_ios. Further-derived classes (
std::ostream) are always constructed with a concrete streambuffer object and call
basic_ios::init(), possibly more than once, to complete initialization of their virtual base.
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.