單例模式就是。。只能有一個實例化。
像一個游戲中。你這個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嗯 就是醬紫
新聞熱點
疑難解答
圖片精選