Namespaces
Variants

std::ios_base::ios_base

De es.cppreference.net
 
 
 
 
private:
ios_base( const ios_base& );
(1) (hasta C++11)
public:
ios_base( const ios_base& ) = delete;
(desde C++11)
protected:
ios_base();
(2)
1) El constructor de copia es privado(hasta C++11)eliminado(desde C++11): los flujos no se pueden copiar.
2) El constructor por defecto es protegido: solo las clases derivadas pueden construir std::ios_base. El estado interno no está definido después de la construcción. La clase derivada debe llamar a std::basic_ios::init() para completar la inicialización antes del primer uso o antes del destructor; de lo contrario, el comportamiento no está definido.

Notas

Lo mismo se aplica a los constructores de la siguiente clase en la jerarquía de E/S, std::basic_ios . Las clases derivadas posteriores ( std::istream y std::ostream ) siempre se construyen con un objeto concreto de búfer de flujo y llaman a std::basic_ios::init() , posiblemente más de una vez, para completar la inicialización de su base virtual.

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Se aplica a Comportamiento publicado Comportamiento correcto
LWG 50 C++98 el constructor de copia no estaba especificado especificado como privado
LWG 220 C++98 el comportamiento al destruir un objeto std::ios_base
antes de llamar a su init() no estaba claro
el comportamiento es
indefinido en este caso
LWG 1249 C++98 la inicialización no necesitaba completarse antes del primer uso también debe completarse