C++版单例模式-现代化简洁写法
回顾一下单例模式,下面是现代最简洁的写法,且都保证了线程安全
饿汉式(线程安全)
程序启动时,实例就开始创建了,因此是线程安全的。
class Singleton{ private:Singleton(){}Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;static Singleton instance;//类内声明 public:static Singleton& getInstance(){return instance;} } Singleton Singleton::instance;
懒汉式(线程安全)
第一次调用instance函数时,实例才被创建出来,全局访问节点使用静态局部变量,保证了实例初始化一次且C++11规定静态局部变量是天然线程安全的
class Singleton{ private:Singleton(){}Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete; public:Singleton& getInstance(){static Singleton instance;return instance;} }