#include <iostream>
#include <fstream>
class Singleton {
private:
// 私有构造函数和拷贝构造函数/赋值运算符,确保单例
Singleton() {
// 构造函数中的初始化代码
std::cout << "Singleton created\n";
}
~Singleton() {
// 析构函数中的持久化代码
std::ofstream file("singleton_data.txt");
if (file.is_open()) {
file << "Singleton destroyed, persisting data...\n";
// 在这里添加你的持久化逻辑
file.close();
} else {
std::cerr << "Unable to open file for writing\n";
}
std::cout << "Singleton destroyed\n";
}
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
public:
// 获取单例实例的静态方法
static Singleton& getInstance() {
static Singleton instance;
return instance;
}
// ... 其他成员函数 ...
};
int main() {
Singleton& s = Singleton::getInstance();
// 使用单例对象...
// 当main函数返回时,程序结束,全局对象和单例对象开始析构
// Singleton的析构函数会被调用,进行持久化操作
return 0;
}
在这个示例中,我们定义了一个名为Singleton
的单例类。在其析构函数中,我们打开了一个文件,并写入了一条消息来模拟持久化操作。当然,在实际应用中,你可能需要执行更复杂的持久化逻辑,如将数据写入数据库或序列化对象到磁盘等。