名前空間
変種
操作

std::ios_base::Init

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

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 1123 C++98 コンストラクタとデストラクタの動作
exposition-onlyの静的データメンバinit_cntに依存
依存関係を削除

[編集] 関連項目

標準C入力ストリーム stdin から読み込む
(グローバルオブジェクト)[編集]
標準C出力ストリーム stdout に書き込む
(グローバルオブジェクト)[編集]
標準Cエラー ストリーム stderr にバッファリングなしで書き込む
(グローバルオブジェクト)[編集]
標準Cエラー ストリーム stderr に書き込む
(グローバルオブジェクト)[編集]
English 日本語 中文(简体) 中文(繁體)