C++中的RAII
#include <iostream> #include <memory> class Resource { public: Resource() { std::cout << "Resource acquired.\n"; } ~Resource() { std::cout << "Resource released.\n"; } }; int main() { // 使用 std::unique_ptr 管理 Resource 对象 std::unique_ptr<Resource> ptr(new Resource()); // 当 main 函数结束时,ptr 被销毁,自动调用 Resource 的析构函数释放资源 return 0; }#include <iostream> #include <fstream> class FileHandler { public: FileHandler(const std::string& filename) : file(filename) { if (!file.is_open()) { std::cerr << "Error opening file.\n"; } else { std::cout << "File opened.\n"; } } ~FileHandler() { if (file.is_open()) { file.close(); std::cout << "File closed.\n"; } } std::ifstream& getFileStream() { return file; } private: std::ifstream file; }; int main() { FileHandler handler("test.txt"); if (handler.getFileStream().is_open()) { // 对文件进行操作 } return 0; }
Last updated