gpt4 book ai didi

c++ - 为什么这个单例实现有效?

转载 作者:行者123 更新时间:2023-11-28 00:31:43 25 4
gpt4 key购买 nike

今天我看到了这种使用 Singleton 的模式,这让我很困惑。

class Singleton{
public:
static Singleton& getInstance();
};

Singleton& Singleton::getInstance(){
static Singeton instance;
return instance;
}
int main(){
Singleton &inst = Singleton::getInstance();
Singleton &inst2 = Singleton::getInstance();
std::cout << &inst << " " << &inst2;
}

指针的输出是一样的。 Here是一个例子。我真的很困惑。我希望每次调用 getInstance() 时都会创建一个新的(虽然是静态的)单例实例。你能解释一下这种行为吗?

最佳答案

出于某种原因,您在此处发布的函数源与您提供链接的页面不同:

static Singleton& getInstance(){
static Singleton instance;
return instance;
}

为什么有效?函数中的静态局部对象instance 只创建一次,即函数第一次被调用时——那是因为它是static。下次您调用该函数时,它会返回对同一对象的引用。

关于c++ - 为什么这个单例实现有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22641617/

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