【发布时间】:2022-01-23 07:06:01
【问题描述】:
C++ 单例代码如下所示:
MyClass& MyClass::getInstance(){
static MyClass instance;
return instance;
}
具体看static MyClass instance;
每次调用 getInstance 时是否都会创建一个新的instance?
编辑
我知道静态成员是一个类。但是static MyClass instance 不是在每次调用getInstance() 时都重新声明(并因此重新创建)“单个”实例instance 吗?
【问题讨论】:
-
没有。这就是
static的含义:有一个实例instance在getInstance的调用之间共享。您可能会怀疑,如果有一堆不同的实例,它就不会是任何类型的“单例”。 -
函数的静态成员仅在第一次调用函数时创建一次。
-
没有。根据定义,静态变量只创建一次,然后在程序运行期间一直存在。函数范围内的静态变量,如
instance,在第一次进入包含块时(或之前)只构造一次。在您的情况下,每次调用getInstance()都会返回对同一对象的引用。 -
但是
static MyClass instance不是在每次调用getInstance()时都重新声明(并因此重新创建)名为instance的单个静态变量吗?