std::ios_base::Init
class Init; |
Этот класс используется для обеспечения правильной инициализации и завершения работы стандартных потоков C++ (std::cin, std::cout и т.д.). Класс отслеживает количество созданных экземпляров и инициализирует потоки C++ при создании первого экземпляра, а также очищает выходные потоки при уничтожении последнего экземпляра.
Заголовочный файл <iostream> ведет себя так, как если бы он определял (прямо или косвенно) экземпляр std::ios_base::Init со статической продолжительностью хранения: это делает безопасным доступ к стандартным потокам ввода-вывода в конструкторах и деструкторах статических объектов с упорядоченной инициализацией (поскольку <iostream> включен в единицу трансляции до определения этих объектов).
| Каждый модуль библиотеки C++ в хостированной реализации ведет себя так, как если бы он содержал единицу интерфейса, которая определяет неэкспортируемую В результате определение этой переменной происходит в порядке появления до любого объявления, следующего за точкой импорта модуля библиотеки C++. Существование такой переменной не наблюдается программой, не ссылающейся ни на один из стандартных объектов ввода-вывода. | (с C++23) |
Функции-члены
| (конструктор) | инициализирует стандартные потоки C++, если они ещё не созданы (публичная функция-член) |
| (деструктор) | очищает стандартные потоки C++, если *this является последним уничтожаемым экземпляром (публичная функция-член) |
Отчеты об ошибках
Следующие отчеты об ошибках, меняющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применимо к | Поведение, опубликованное | Корректное поведение |
|---|---|---|---|
| LWG 1123 | C++98 | поведение конструктора и деструктора зависит от статического члена данных init_cnt (только для показа) | зависимость удалена |
См. также
читает из стандартного потока ввода C stdin(глобальный объект) |
|
записывает в стандартный поток вывода C stdout(глобальный объект) |
|
записывает в стандартный поток ошибок C stderr, не буферизованный(глобальный объект) |
|
записывает в стандартный поток ошибок C stderr(глобальный объект) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/ios_base/Init