命名空间
变体
操作

std::ios_base::Init

来自 cppreference.cn
< cpp‎ | io‎ | ios base
 
 
 
 
class Init;

此类用于确保默认 C++ 流 (std::cin, std::cout, 等) 被正确地初始化和销毁。此类跟踪已创建的实例数量,并在构造第一个实例时初始化 C++ 流,并在销毁最后一个实例时刷新输出流。

头文件 <iostream> 的行为如同它定义(直接或间接地)了 std::ios_base::Init 的一个具有静态存储持续时间 (static storage duration) 的实例:这使得在具有有序初始化的静态对象的构造函数和析构函数中访问标准 I/O 流是安全的(只要在定义这些对象之前,翻译单元中包含了 <iostream>)。

宿主实现中的每个 C++ 库模块的行为都如同它包含一个接口单元,该单元定义了一个未导出std::ios_base::Init 变量,并具有有序初始化

因此,该变量的定义在外观上排序在 C++ 库模块的导入点之后的任何声明之前。程序是否引用任何标准 iostream 对象都无法观察到这种定义是否存在。

(since C++23)

[编辑] 成员函数

(constructor)
如果默认 C++ 流尚未创建,则初始化它们
(public member function)
(destructor)
如果 *this 是要销毁的最后一个实例,则刷新默认 C++ 流
(public member function)

[编辑] 缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。

DR 应用于 已发布行为 正确行为
LWG 1123 C++98 构造函数和析构函数的行为
依赖于仅用于演示的静态数据成员 init_cnt
移除了依赖性

[编辑] 参见

从标准 C 输入流 stdin 读取
(全局对象)[编辑]
写入标准 C 输出流 stdout
(全局对象)[编辑]
写入标准 C 错误流 stderr,无缓冲
(全局对象)[编辑]
写入标准 C 错误流 stderr
(全局对象)[编辑]