单例模式析构时持久化

cpp 复制代码
#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的单例类。在其析构函数中,我们打开了一个文件,并写入了一条消息来模拟持久化操作。当然,在实际应用中,你可能需要执行更复杂的持久化逻辑,如将数据写入数据库或序列化对象到磁盘等。

相关推荐
敲键盘的小夜猫1 小时前
Milvus向量Search查询综合案例实战(下)
数据库·python·milvus
钢铁男儿2 小时前
深入剖析C#构造函数执行:基类调用、初始化顺序与访问控制
java·数据库·c#
有时间要学习2 小时前
MySQL——事务
数据库·mysql
翻滚吧键盘2 小时前
Spring Boot,注解,@ComponentScan
java·数据库·spring boot
not coder2 小时前
Pytest Fixture 详解
数据库·pytest
小光学长3 小时前
基于vue框架的独居老人上门护理小程序的设计r322q(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
weixin_472339463 小时前
MySQL优化全链路实践:从慢查询治理到架构升级
数据库·mysql·架构
运维老曾3 小时前
MySQ-8.42 MGR 组复制部署及详解
数据库·mysql
厚衣服_33 小时前
第1篇:数据库中间件概述:架构演进、典型方案与应用场景
数据库·中间件·架构
課代表3 小时前
Adobe LiveCycle ES、LiveCycle DS 与 BlazeDS 关系解析与比较
数据库·adobe·pdf·express·livecycle·lcds·soa平台