C++ 언어에서는 파일을 열고 조작하는 방법이 여러 가지가 있습니다. 그러나 RAII 방식은 destruktor가 메모리를 확보하는 데주의를 기울이기 때문에 매우 인기가 있습니다.파일 스트림이있는 RAII
하지만 파일 스트림 종료는 어떻게됩니까? 아는 한, destruktor는 어쨌든 파일을 닫아야합니다. 그러나 destruktor도 예외를 throw 할 수 없습니다. 따라서 스트림을 닫지 않고 블록 끝에서 파괴되면 오류가 닫히는 동안 발생할 수있는 정보가 느슨해 질 수 있습니다.
내 생각이 맞습니까? RAII 방식에도 불구하고 항상 스트림을 닫아야합니까?
예 :
{
std::ofstream ofs;
ofs.open ("test.txt");
ofs << "blablabla";
//do i need the following?
ofs.close();
}
파일 스트림 개체는 포함 된 개체가 소멸되면 예외가 발생하지 않고 소멸되어야합니다. 소멸자에서 명시 적으로 파일을 닫을 필요가 없습니다. –
아니요, 수동으로'.close()'할 필요는 없습니다. RAII의 _ 전체 점입니다. – emlai