单例模式保证一个类的实例只有一个。如何保证一个类只有一个实例,不同的语言语法特性不同,需要结合语言的语法特点来实现。在 C++中的实现方式如下:
#include <iostream>
using namespace std;
class Singleton
{
private:
Singleton() {}
Singleton(const Singleton& singleton) {}
public:
static Singleton* get_instance()
{
return p_instance;
}
private:
static Singleton* p_instance;
};
Singleton *Singleton::p_instance = new Singleton;
int main()
{
Singleton* singleton = Singleton::get_instance();
cout << singleton
return 0;
}
上面类通过:
- 普通构造、拷贝构造私有,从而禁止对象被创建;
- 提供静态成员变量、静态成员函数来访问唯一对象;
- 类内的静态成员要在类外初始化。
如果单例类需要被继承的话,将普通构造、拷贝构造函数的访问权限修改为 protected 即可。另外,上面代码仅仅是为了保证不会被实例化出更多的对象,我们在实际使用时,仍然需要在类内增加其他的业务代码。

冀公网安备13050302001966号