C++言語では、ファイルを開く方法と操作方法が複数あります。しかし、RAIIアプローチは非常に普及しています。なぜなら、デストラクタはメモリを解放することに注意しているからです。ファイルストリームを使用するRAII
しかし、ファイルストリームの終了はどうですか?私が知る限り、destruktorはファイルを閉じなければなりません。しかし、destruktorも例外をスローすることはできません。だから私は私のストリームを閉じないと、それはブロックの終わりに破壊される私は、閉鎖中に発生する可能性があるエラーについての情報が緩いかもしれません。
私の考えは正しいですか? RAIIのアプローチにもかかわらず、私はいつもストリームを閉じるべきですか?
例:
{
std::ofstream ofs;
ofs.open ("test.txt");
ofs << "blablabla";
//do i need the following?
ofs.close();
}
ファイルストリームオブジェクトは、それが含まれているオブジェクトが破棄されたときに破棄する必要があります(したがって、例外をスローせずに閉じます)。デストラクタで明示的にファイルを閉じる必要はありません。 –
いいえ、手作業で '.close()'する必要はありません。これはRAIIの全ポイントです。 – emlai