Namespaces
Variants

std::ios_base::ios_base

От ru.cppreference.net
 
 
Библиотека ввода/вывода
Манипуляторы ввода/вывода
Функции печати (C++23)
Си-стиль ввода/вывода
Буферы
(C++98/26*)
Потоки
Абстракции
Файловый ввод/вывод
Строковый ввод/вывод
Массивовый ввод/вывод
(C++98/26*)
(C++98/26*)
(C++98/26*)
Синхронизированный вывод
Типы
Интерфейс категорий ошибок
(C++11)
 
 
private:
ios_base( const ios_base& );
(1) (до C++11)
public:
ios_base( const ios_base& ) = delete;
(начиная с C++11)
protected:
ios_base();
(2)
1) Конструктор копирования является закрытым(до C++11)удалённым(начиная с C++11): потоки не копируются.
2) Конструктор по умолчанию защищён: только производные классы могут создавать std::ios_base. Внутреннее состояние не определено после конструирования. Производный класс должен вызвать std::basic_ios::init() для завершения инициализации перед первым использованием или перед деструктором; в противном случае поведение не определено.

Примечания

То же самое относится к конструкторам следующего класса в иерархии I/O, std::basic_ios . Дальнейшие производные классы ( std::istream и std::ostream ) всегда конструируются с конкретным объектом stream buffer и вызывают std::basic_ios::init() , возможно, более одного раза, для завершения инициализации их виртуального базового класса.

Отчёты о дефектах

Следующие отчеты об изменениях в поведении, содержащие исправления дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение в опубликованной версии Корректное поведение
LWG 50 C++98 конструктор копирования не был указан указан как приватный
LWG 220 C++98 поведение при уничтожении объекта std::ios_base
до вызова его init() было неясным
поведение в этом случае
не определено
LWG 1249 C++98 инициализация не обязательно должна быть завершена до первого использования также должна быть завершена