1. 程式人生 > >Qt C++單例類寫法

Qt C++單例類寫法

前言

所謂的單例模式,簡單的總結有兩點:
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();