std::ios_base:: Init
|
class
Init
;
|
||
此类用于确保默认的 C++ 流( std::cin 、 std::cout 等)得到正确的初始化和析构。该类会跟踪其实例的创建数量,在构造第一个实例时初始化 C++ 流,并在最后一个实例析构时刷新输出流。
头文件
<iostream>
的行为如同它直接或间接定义了一个具有静态存储期的
std::ios_base::Init
实例:这使得在具有
有序初始化
的静态对象的构造函数和析构函数中访问标准 I/O 流是安全的(只要在定义这些对象之前,翻译单元中已包含
<iostream>
)。
|
在
托管实现
中,每个
C++ 库模块
的行为如同包含一个
接口单元
,该单元定义了具有
有序初始化
特性的未导出
因此,该变量的定义在导入 C++ 库模块后的任何声明之前按出现顺序排序。对于未引用任何标准 iostream 对象的程序而言,此类定义是否存在是不可观测的。 |
(since C++23) |
成员函数
|
(constructor)
|
若默认C++流尚未创建则进行初始化
(公开成员函数) |
|
(destructor)
|
若
*
this
是最后一个被销毁的实例,则刷新默认C++流
(公开成员函数) |
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| DR | 适用范围 | 发布时的行为 | 正确行为 |
|---|---|---|---|
| LWG 1123 | C++98 |
构造函数和析构函数的行为
依赖于仅用于说明的静态数据成员
init_cnt
|
移除了该依赖关系 |
另请参阅
|
从标准C输入流
stdin
读取数据
(全局对象) |
|
|
写入到标准C输出流
stdout
(全局对象) |
|
|
写入到标准C错误流
stderr
,无缓冲
(全局对象) |
|
|
写入到标准C错误流
stderr
(全局对象) |