单例模式就是。。只能有一个实例化。
像一个游戏中。你这个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嗯 就是酱紫
新闻热点
疑难解答
图片精选