gpt4 book ai didi

c++ - getInstance() 是如何工作的?

转载 作者:可可西里 更新时间:2023-11-01 18:32:44 26 4
gpt4 key购买 nike

最近我阅读了一些使用广泛遵循 getInstance() 方法的 C++ 代码:

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

从这个代码片段的使用方式,我了解到 getInstance() 的工作方式类似于 return this,返回 class S 实例的地址(或 ref)。但是我很困惑。

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

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

最佳答案

这就是所谓的Singleton design pattern .它的显着特征是该类永远只能有一个实例,并且该模式确保了这一点。该类有一个私有(private)构造函数和一个通过 getInstance 方法返回的静态创建的实例。您不能从外部创建实例,因此只能通过所述方法获取对象。

由于instancegetInstance 方法中是static,它将在多次调用之间保留其值。它是在首次使用之前的某个时间分配和构建的。例如。在 this answer似乎 GCC 在函数首次使用时初始化了静态变量。 This answer有一些与此相关的 C++ 标准的摘录。

关于c++ - getInstance() 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18997240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com