130. RAII

Question.3

A developer writes log data to a file using RAII:

class LogFile {
   FILE* f;
public:
   LogFile(const char* name) : f(fopen(name,"a")) {}
   ~LogFile() { if (f) fclose(f); }
   void write(const char* msg) { if (f) fprintf(f, msg); }
   LogFile(const LogFile&) = delete;
   LogFile& operator=(const LogFile&) = delete;
};

void log_event(const char* event) {
   LogFile log("events.txt");
   log.write(event);
   if (!valid(event)) return;  // Early exit
   log.write("OK");
}

Is the file properly closed on the early return?

Need Help? Refer to the Quick Guide below

Select Answer