Spec-Zone.ru › C++

std::ios_base::Init

class Init;

Этот класс используется для обеспечения правильной инициализации и уничтожения стандартных потоков C++ (std::cin, std::cout и т. д.). Класс отслеживает количество созданных его экземпляров и инициализирует потоки C++, когда создаётся первый экземпляр, а также сбрасывает выходные потоки, когда уничтожается последний экземпляр.

Заголовок <iostream> ведёт себя так, как если бы он определял (непосредственно или косвенно) экземпляр std::ios_base::Init со статической длительностью хранения: это обеспечивает безопасный доступ к стандартным потокам ввода-вывода в конструкторах и деструкторах статических объектов с упорядоченной инициализацией (если <iostream> включён в единицу трансляции до определения этих объектов).

Каждый модуль библиотеки C++ в реализации с поддержкой окружения ведёт себя так, как если бы он содержал модульную единицу интерфейса, определяющую неэкспортируемую переменную std::ios_base::Init с упорядоченной инициализацией.

В результате определение этой переменной упорядочено по появлению перед любым объявлением, следующим за точкой импорта модуля библиотеки C++. Наличие такого определения не может быть обнаружено программой, которая не обращается ни к одному из стандартных объектов iostream.

(начиная с C++23)

Функции-члены

(конструктор)
инициализирует стандартные потоки C++, если они ещё не созданы
(открытая функция-член)
(деструктор)
сбрасывает стандартные потоки C++, если *this является последним уничтожаемым экземпляром
(открытая функция-член)

Отчёты об ошибках

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

Отчёт об ошибке Применён к Поведение согласно опубликованной версии Правильное поведение
LWG 1123 C++98 поведение конструктора и деструктора
зависит от статического члена данных, используемого только для описания init_cnt
зависимость удалена

См. также

cinwcin
читает из стандартного входного потока C stdin
(глобальный объект)
coutwcout
записывает в стандартный выходной поток C stdout
(глобальный объект)
cerrwcerr
записывает в стандартный поток ошибок C stderr, без буферизации
(глобальный объект)
clogwclog
записывает в стандартный поток ошибок C stderr
(глобальный объект)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/ios_base/Init

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API