单例模式一般应用在整个应用中只会存在一个对象。比如应用类,游戏场景类,工具类等。
实现方式:
头文件 singleton.h:
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
class CSingleton{
public:
//供外部调用,通过此方法获取实例
static CSingleton* getInstance();
private:
CSingleton();
CSingleton(const CSingleton&);
CSingleton& operator=(const CSingleton&);
static CSingleton* instance;
}
#endif
实现文件 singleton.cpp
#include "singleton.h"
//构造函数
CSingleton::CSingleton(){}
//空拷贝函数,防止复制
CSingleton::CSingleton(const CSingleton&){}
//重载=函数,防止复制
CSingleton::CSingleton& operate=(const CSingleton&){}
CSingleton* CSingleton::getInstance(){
if(instance==null)//双重判断, 避免高并发时,产生多个实例(这个办法会增加一点点开销)
{
lock();
if(instance==null) instance=new CSingleton();
unlock();
}
return instance;
}