所謂的單例模式,簡單的總結有兩點: 1.確保一個類只能創建一個實例 2.能夠提供一個訪問類對象的全局指針 為滿足以上條件,需要做的事情很簡單:第一步,將構造函數設置為私有,不讓在其它地方可以創建實例;第二步,創建一個公有靜態函數接口,在接口中創建類的實例并返回;這樣一來,在其它類里面要調用單例類的函數的話,就可以通過調用靜態函數拿到類的示例然后再調用類的其它公有函數。
頭文件
class CUtility{public: static CUtility* GetInstance(); static void Release(); int getCount(){ return m_nCount; } void setCount(int c){ m_nCount = c; }PRivate: CUtility(); static CUtility* m_pInstance; bool m_nCount;};這里定義了一個靜態類GetInstance()用于訪問類的實例,然后定義了一些別的公有函數getCount()供外部函數調用。
源文件
#include "cutility.h"CUtility* CUtility::m_pInstance = NULL;CUtility *CUtility::GetInstance(){ if(m_pInstance == NULL) { m_pInstance = new CUtility(); atexit(Release); } return m_pInstance;}void CUtility::Release(){ if(m_pInstance) { delete m_pInstance; m_pInstance = NULL; }}CUtility::CUtility(): m_nCount(0){}首先是靜態變量m_pInstance的初始化,這步驟一定不能少。 ok,代碼完成了 調用方式,假若第三方類想訪問這個單例類中的getCount函數,那么, CUtility::GetInstance()->getCount();
新聞熱點
疑難解答
圖片精選