Namespaces
Variants

std::ios_base:: Init

From cppreference.net
class Init ;

このクラスは、デフォルトのC++ストリーム( std::cin std::cout など)が適切に初期化および破棄されることを保証するために使用されます。このクラスは自身のインスタンスがいくつ作成されたかを追跡し、最初のインスタンスが構築された時にC++ストリームを初期化し、最後のインスタンスが破棄された時に出力ストリームをフラッシュします。

ヘッダー <iostream> は、静的ストレージ期間を持つ std::ios_base::Init のインスタンスを(直接的または間接的に)定義しているかのように振る舞います:これにより、 順序付けられた初期化 を持つ静的オブジェクトのコンストラクタおよびデストラクタ内で標準入出力ストリームに安全にアクセスできます(ただし、これらのオブジェクトが定義される前に翻訳単位で <iostream> がインクルードされている場合に限ります)。

ホストされた実装における各 C++ライブラリモジュール は、 インターフェース単位 を含み、エクスポートされない std::ios_base::Init 変数を 順序付けられた初期化 で定義しているかのように振る舞う。

その結果、その変数の定義は、C++ライブラリモジュールのインポートポイントに続くあらゆる宣言よりも外観順序で前に配置される。そのような定義が存在するかどうかは、標準iostreamオブジェクトを参照しないプログラムからは観測できない。

(C++23以降)

メンバー関数

(constructor)
まだ作成されていない場合、デフォルトのC++ストリームを初期化します
(public member function)
(destructor)
* this が破棄される最後のインスタンスである場合、デフォルトのC++ストリームをフラッシュします
(public member function)

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 1123 C++98 コンストラクタとデストラクタの動作が
説明専用の静的データメンバ init_cnt に依存していた
依存関係を除去

関連項目

標準C入力ストリームからの読み込み stdin
(グローバルオブジェクト)
標準C出力ストリームへの書き込み stdout
(グローバルオブジェクト)
標準Cエラーストリームへの書き込み stderr 、バッファリングなし
(グローバルオブジェクト)
標準Cエラーストリームへの書き込み stderr
(グローバルオブジェクト)