最近我在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
,其引用将被返回怎么办?
这就是所谓的Singleton设计模式.它的显着特点是,只能存在该类的一个实例,并且模式可以确保该类.该类具有私有构造函数和随该getInstance
方法返回的静态创建的实例.您无法从外部创建实例,因此只能通过所述方法获取对象.
由于instance
是static
在getInstance
方法它将保留其多次调用之间的值.它在第一次使用之前被分配和构建.例如,在这个答案中,似乎GCC在首次使用该函数时初始化静态变量.这个答案有一些与C++标准相关的摘录.
归档时间: |
|
查看次数: |
15698 次 |
最近记录: |