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++. Существование такой переменной не наблюдается программой, не ссылающейся ни на один из стандартных объектов ввода-вывода.

(с C++23)

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

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

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

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

DR Применимо к Поведение, опубликованное Корректное поведение
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/w/cpp/io/ios_base/Init

Spec-Zone.ru

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