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?