使用单例模式进行延迟初始化

时间:2014-01-21 07:59:42

标签: c++ design-patterns singleton

以下代码是否有助于延迟初始化
或者只要有人包含标题(甚至在程序启动时),就会创建singletonInstance吗?

class SingletonClass
{
    private:
         SingletonClass();
        ~SingletonClass();

    public: 

        static const SingletonClass& Instance()
        {
            static SingletonClass singletonInstance;
            return singletonInstance; 
        }
};

2 个答案:

答案 0 :(得分:15)

这被称为Meyers singleton,它们是懒惰的实例化。

有一些注意事项:

  • 单例将在程序结束时以与创建它们相反的顺序销毁,因此可能存在依赖性问题。
  • C ++ 03不保证在多线程环境中不受竞争条件的影响。

答案 1 :(得分:10)

SingletonClass构造函数的调用不会早于某些人调用Instance()方法。

因此,它有助于延迟初始化。