一 点睛
单例的实现方法:定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法来获取该实例。
单例模式的作用就是保证在整个应用程序的生命周期的任何时刻,单例类的实例都只存在一个。
单例模式通过类本身来管理其唯一实例,唯一的实例是类的一个普通对象,但设计这个类时,让它只能创建一个实例并提供对此实例的全局访问。
二 实战
1 代码
#include<iostream>
using namespace std;
class CSingleton{
private:
CSingleton(){ //构造函数是私有的
}
static CSingleton *m_pInstance;
public:
static CSingleton * GetInstance(){
if(m_pInstance == NULL) //判断是否第一次调用
m_pInstance = new CSingleton();
return m_pInstance;
}
};
CSingleton * CSingleton::m_pInstance=NULL;//初始化静态数据成员
int main(){
CSingleton *s1= CSingleton::GetInstance();
CSingleton *s2= CSingleton::GetInstance();
if(s1==s2){
cout<<"s1=s2"<<endl; //程序的执行结果是输出了s1=s2
}
return 0;
}
2 运行
[root@localhost charpter02]# g++ 0233.cpp -o 0233
[root@localhost charpter02]# ./0233
s1=s2
3 说明
单例类有以下3个特征
-
有一个指向唯一实例的静态指针m_pInstance,并且是私有的。
-
有一个公有函数,可以获取这个唯一的实例,并且在需要的时候创建该实例。
-
其构造函数是私有的,这样就不能从别的地方创建该类的实例。