~basic_filebuf() override;
概要
オブジェクトを破棄する。
効果
close()
を呼び出す。
そこで例外が発生した場合、catchして何も行わない(再送出しない)。
事後条件
実装例
~basic_filebuf() override {
try {
close();
} catch (...) {
}
}
注意
このデストラクタ内で呼び出したclose
メンバ関数で何か問題が発生した場合、それを検出する方法はない。
close
メンバ関数が成功したことの判定は、特に書き込み目的でファイルを開いている場合、重要である。
なぜなら、close
内部でbasic_filebuf
やFILE*
などが保持するバッファからの書き出しがあるため、ここで書き込み処理に失敗する可能性があるためである。
失敗時の処理をきちんと行うためには、デストラクタに頼らず予めclose
メンバ関数を呼び出しておくべきである。
バージョン
言語
- C++98