std::ios_base:: ios_base
From cppreference.net
| (1) | ||
|
private
:
ios_base ( const ios_base & ) ; |
(hasta C++11) | |
|
public
:
ios_base ( const ios_base & ) = delete ; |
(desde C++11) | |
|
protected
:
ios_base ( ) ; |
(2) | |
1)
El constructor de copia es
private
(until C++11)
deleted
(since C++11)
: los streams no son copiables.
2)
El constructor por defecto está protegido: solo las clases derivadas pueden construir
std::ios_base
. El estado interno es indefinido después de la construcción. La clase derivada debe llamar
std::basic_ios::init()
para completar la inicialización antes del primer uso o antes del destructor; de lo contrario, el comportamiento es indefinido.
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 |