Skip to content

Latest commit

 

History

History
41 lines (32 loc) · 1.14 KB

op_destructor.md

File metadata and controls

41 lines (32 loc) · 1.14 KB

デストラクタ

  • fstream[meta header]
  • std[meta namespace]
  • basic_filebuf[meta class]
  • function[meta id-type]
~basic_filebuf() override;

概要

オブジェクトを破棄する。

効果

close()を呼び出す。 そこで例外が発生した場合、catchして何も行わない(再送出しない)。

事後条件

実装例

~basic_filebuf() override {
  try {
    close();
  } catch (...) {
  }
}

注意

このデストラクタ内で呼び出したcloseメンバ関数で何か問題が発生した場合、それを検出する方法はない。 closeメンバ関数が成功したことの判定は、特に書き込み目的でファイルを開いている場合、重要である。 なぜなら、close内部でbasic_filebufFILE*などが保持するバッファからの書き出しがあるため、ここで書き込み処理に失敗する可能性があるためである。 失敗時の処理をきちんと行うためには、デストラクタに頼らず予めcloseメンバ関数を呼び出しておくべきである。

バージョン

言語

  • C++98

参照