RAII本质是"资源获取即初始化"。可以用智能酒店比喻:入住自动开门(构造函数),退房自动打扫(析构函数)。相比手动管理易忘关灯锁门,RAII让资源释放成为对象生命周期的自然结果,大幅提升代码可靠性,你永远不用担心忘关灯...
【代码演示】
#include <iostream>
#include <fstream>
// 🏨 智能酒店类
class SmartHotel {
private:
std::fstream room; // 酒店房间
public:
// 入住:自动开门
SmartHotel(const std::string& room_name) : room(room_name) {
std::cout << "🔑 欢迎入住 " << room_name << " 房间!\n";
}
// 使用房间
void use_room() {
room << "使用房间中...\n";
std::cout << "💡 正在使用房间\n";
}
// 退房:自动打扫(析构函数)
~SmartHotel() {
if (room.is_open()) {
room.close();
std::cout << "🧹 自动打扫完成,房间已关闭\n";
}
}
};
// 🏚️ 传统手动管理
void manual_management() {
std::fstream room("manual_room.txt");
std::cout << "手动开门\n";
// ... 使用房间
// 容易忘记关闭!🚨
}
int main() {
{
SmartHotel my_room("豪华套房"); // 自动入住
my_room.use_room();
} // 自动退房打扫!
manual_management(); // 风险:可能忘记关房
}