Avatar ·

什么是 C++ 中的 RAII(资源获取即初始化)以及为什么需要它?

大家好!我正在学习 C++,经常听到 RAII,但一直无法完全理解这个概念。它似乎被解释为“资源获取即初始化”,但这听起来有点令人困惑。 我有一个具体的问题。我正在编写一个用于处理文件的小类。这是我的代码: ```cpp class FileHandler { public: FileHandler(const char* filename) { file = fopen(filename, "r"); if (!file) { std::cerr << "无法打开文件" << std::endl; } } void readData() { // 读取数据 char buffer[100]; fgets(buffer, 100, file); } ~FileHandler() { // 这里我忘记关闭文件 } private: FILE* file; }; ``` 问题在于,我经常忘记在析构函数中关闭文件,或者如果在构造函数中发生错误,就会导致资源泄漏。我还听说,如果抛出异常,一切都可能崩溃。 请解释一下,