C++ 保证某个 Class 在全程序仅有一个实例

文章目录

定义这样一个类a

1
2
3
4
5
6
7
8
9
10
11
12
class a
{
public:
a(){};
~a(){};
static a* theInstance();
};
a* a::theInstance()
{
static a *b = new a;
return b;
}

那么在全程序任何地方使用 a::theInstance()来获取实例,就总能得到唯一的类 a 的实例。这大概是比较基础的技巧,但是我第一次知道时还是很惊讶的。原理是利用了类的静态成员函数和静态变量的性质。