概述:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
示例如下(非线程安全的,如果是多线程的单例模式需要加锁控制):
#include<iostream>
using namespacestd;
//单例类的声明
class Singelton
{
private:
//构造函数私有,外部无法调用
Singelton(){}
//静态类对象指针
static Singelton* singel;
public:
//提供给外部的构造本类对象的接口(全局访问点)
static Singelton* GetInstance();
};
//静态成员类外初始化
Singelton* Singelton::singel = NULL;
//获取类对象接口实现
Singelton* Singelton::GetInstance()
{
if(singel== NULL)
{
singel = new Singelton();
}
return singel;
}
测试程序:
int main()
{
Singelton* p1=Singelton::GetInstance();
Singelton* p2=Singelton::GetInstance();
if(p1 ==p2)
cout<<"ok"<<endl;
else
cout<<"no"<<endl;
return 0;
}