getInstance()如何工作?

qwe*_*iop 7 c++ oop static

最近我在getInstance()方法中广泛使用了一些C++代码:

class S
{
    private:
        int some_int = 0;
    public:
        static S& getInstance()
        {
            static S instance; / (*) /
            return instance;
        }
};
Run Code Online (Sandbox Code Playgroud)

从这个代码片段的使用方式来看,我学习了getInstance()的工作方式return this,返回实例的地址(或ref)class S.但我很困惑.

1)S在内存中分配的行(*)中定义的静态变量在哪里?为什么它可以像return this

2)如果存在多个实例class S,其引用将被返回怎么办?

Joe*_*oey 5

这就是所谓的Singleton设计模式.它的显着特点是,只能存在该类的一个实例,并且模式可以确保该类.该类具有私有构造函数和随该getInstance方法返回的静态创建的实例.您无法从外部创建实例,因此只能通过所述方法获取对象.

由于instancestaticgetInstance方法它将保留其多次调用之间的值.它在第一次使用之前被分配和构建.例如,在这个答案中,似乎GCC在首次使用该函数时初始化静态变量.这个答案有一些与C++标准相关的摘录.