std::ios_base::Init
class Init; |
Этот класс используется для обеспечения правильной инициализации и уничтожения стандартных потоков C++ (std::cin, std::cout и т. д.). Класс отслеживает количество созданных его экземпляров и инициализирует потоки C++, когда создаётся первый экземпляр, а также сбрасывает выходные потоки, когда уничтожается последний экземпляр.
Заголовок <iostream> ведёт себя так, как если бы он определял (непосредственно или косвенно) экземпляр std::ios_base::Init со статической длительностью хранения: это обеспечивает безопасный доступ к стандартным потокам ввода-вывода в конструкторах и деструкторах статических объектов с упорядоченной инициализацией (если <iostream> включён в единицу трансляции до определения этих объектов).
| Каждый модуль библиотеки C++ в реализации с поддержкой окружения ведёт себя так, как если бы он содержал модульную единицу интерфейса, определяющую неэкспортируемую переменную В результате определение этой переменной упорядочено по появлению перед любым объявлением, следующим за точкой импорта модуля библиотеки C++. Наличие такого определения не может быть обнаружено программой, которая не обращается ни к одному из стандартных объектов iostream. | (начиная с C++23) |
Функции-члены
|
(конструктор) | инициализирует стандартные потоки C++, если они ещё не созданы (открытая функция-член) |
|
(деструктор) | сбрасывает стандартные потоки C++, если *this является последним уничтожаемым экземпляром (открытая функция-член) |
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроспективно к ранее опубликованным стандартам C++.
| Отчёт об ошибке | Применён к | Поведение согласно опубликованной версии | Правильное поведение |
|---|---|---|---|
| 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/cpp/io/ios_base/Init