首页 > 代码库 > 【设计模式】单例模式 c++实现

【设计模式】单例模式 c++实现

单例模式一般应用在整个应用中只会存在一个对象。比如应用类,游戏场景类,工具类等。

实现方式:

头文件 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;

}

 

【设计模式】单例模式 c++实现