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 (全局对象) |