C++单例模式 |
您所在的位置:网站首页 › 子木出处 › C++单例模式 |
单例模式
什么是单例模式
单例是设计模式里面的一种,全局有且只有一个类的static实例,在程序任何地方都能够调用到。单例模式分为懒汉模式(线程不安全)和饿汉模式; 懒汉模式因为很懒,所以在调用方法的时候去new对象,多线程中是不安全的,需要加锁; 普通指针的懒汉模式(线程安全的,需要手动释放空间)需要自己手动delete去释放空间; #include #include //使用加锁的方式保证线程安全 class SingleInstance { public: ~SingleInstance() { std::cout //上锁 std::lock_guard lk(m_mutex); //双重判断 if (m_SingleInstance == nullptr) { m_SingleInstance = new SingleInstance(); } } return m_SingleInstance; } private: explicit SingleInstance() { std::cout std::cout //上锁 std::lock_guard lk(m_mutex); //双重判断 if (m_SingleInstance == nullptr) { m_SingleInstance = std::shared_ptr(new SingleInstance()); } } return m_SingleInstance; } private: explicit SingleInstance() { std::cout std::cout std::cout std::cout std::cout |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |