需要帮助来理解单例模式

时间:2014-02-01 13:25:14

标签: c++ singleton

有人能解释一下这段代码吗?

class S
{
    public:
      static S& getInstance()
        {
            static S    instance;
            return instance;
        }
    private:
        S() {}
        S(S const&);              // Don't Implement.
        void operator=(S const&); // Don't implement
};

我的理解是: getInstance是一个静态方法,它将返回对实例的引用,但是这个实例在哪里创建?我没有看到任何新的S();所以..

1 个答案:

答案 0 :(得分:1)

具有静态存储持续时间的块范围实体(在您的情况下为static S instance;)在控件第一次通过其声明时初始化。在C ++ 11之前,这不是线程安全的(但是,某些编译器确实提供了强制执行线程安全的选项)。至于C ++ 11,标准规定“如果控件在初始化变量时同时进入声明,则并发执行应等待初始化完成。”