std::ios_base::Init
成员函数 | ||||
格式化 | ||||
本地环境 | ||||
内部可扩展数组 | ||||
杂项 | ||||
成员类 | ||||
ios_base::Init
|
||||
成员类型 | ||||
class
Init;
|
||
此类用以确保默认 C++ 流(std::cin、std::cout 等)会被正确初始化及析构。该类会跟踪它被创建的实例数量,在构造首个实例时创建并初始化 C++ 流,并且在析构最后实例时清除输出流缓冲区。
标头 <iostream>
表现如同它定义(直接或间接)一个有静态存储期的 std::ios_base::Init
实例:这使得在具有有序初始化的静态对象的构造函数及析构函数中,访问标准输入/输出流是安全的(只要在翻译单元中,定义该对象前包含
<iostream>)。
在有宿主实现中,每个
C++
库模块表现如同它包含了某个接口单元,该单元定义了一个未导出且具有有序初始化的
这会使得该变量的定义按顺序在 C++ 库模块导入点后的所有声明之前出现。如果程序没有引用任何标准输入/输出流对象,那么它也无法观测到该定义是否存在。 |
(C++23 起) |
成员函数
(构造函数)
|
在默认 C++ 流未被初始化的情况下初始化默认 C++ 流 (公开成员函数) |
(析构函数)
|
在 *this
是最后要被销毁的实例的情况下清除默认 C++ 流的缓冲区 (公开成员函数) |
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 1123 | C++98 | 构造函数和析构函数的行为依赖了一个仅用于阐述的静态数据成员 init_cnt
|
移除依赖 |
参阅
从标准 C 输入流 stdin
中读取 (全局对象) |
|
写入到标准 C 输出流 stdout (全局对象) |
|
写入到标准 C 错误流 stderr,无缓冲 (全局对象) |
|
写入到标准 C 错误流 stderr (全局对象) |