C++单例模式简单实现
原创
©著作权归作者所有:来自51CTO博客作者日渐消瘦DBBH的原创作品,请联系作者获取转载授权,否则将追究法律责任
单例模式就是。。只能有一个实例化。
像一个游戏中。你这个NPC只有一个。不能多次创建 大概酱紫
怎么弄呐
class A{
public:
static A*getInstance();//这个获取实例
private:
A();
static A*m_Instace;
}
A* A::m_Instance=new A;//初始化
A*A::getInstance()
{
if(m_Instance)//实例还未创建则创建
m_Instance=new A;
return m_Instance;//返回实例
}
这样。简单的单例模式就出现了。。但是。析构函数不见了。。记不到哪里看的方法了。。A内部弄个B类来执行析构的事情
完整马。
#include <iostream>
using namespace std;
class A
{
public:
static A*getInstance();
void show(){ std::cout << 1; }//测试是否成功
private:
class B{
~B(){
if (A::m_Instance)//在B里面。。判断m_Instance是否实例化了。。若是则delete掉
{
delete A::m_Instance;
}
}
};
A(){ };
static A* m_Instance;
static B clr;//静态创建的话,程序执行完毕的时候会析构 就顺便析构了A了。
};
A*A::m_Instance = new A;
A*A::getInstance() {
if (!m_Instance)
{
m_Instance = new A;
}
return m_Instance;
};
#include "h.hpp"
int main()
{
A *a=A::getInstance(); A*b=A::getInstance();
if(a==b)a->show();
}
会输出1
嗯 就是酱紫