名稱空間
變體
操作

std::ios_base::Init

來自 cppreference.com
< 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
(全域性物件)[編輯]