命名空间
变体
操作

std::ios_base::Init

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

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

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

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

因此,该变量的定义在导入 C++ 库模块后出现的任何声明之前按顺序出现。程序是否能够观测到这样的定义,取决于它是否引用任何标准 iostream 对象。

(C++23 起)

[编辑] 成员函数

(构造函数)
如果默认 C++ 流尚未创建,则对其进行初始化
(公开成员函数)
(析构函数)
如果 *this 是要销毁的最后一个实例,则刷新默认 C++ 流
(公开成员函数)

[编辑] 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 发布时的行为 正确的行为
LWG 1123 C++98 构造函数和析构函数的行为
依赖于仅用于解释的静态数据成员 init_cnt
移除了依赖

[编辑] 参见

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