單例模式是十分常見的一種設計模式。乙個確定的單例模式在程式中只會有乙個例項,所以在一些系統中,希望某個類的例項只有乙個,那麼就可以將這個類定義為乙個單例類。
之前用cocos2d-x寫了個小遊戲,因為遊戲中的資料在各個layer中都是相同的,所以只需要乙個例項就夠了,所以就將遊戲資料類定義為乙個單例類。
下面是關於單例類的一段簡單**:
class singleton
public:
static singleton* getinstance();
void run();
static singleton* minstance;
};singleton* singleton::minstance = null;
singleton* singleton::getinstance()
return minstance;
}void singleton::run()
執行結果如下:
在單例類中,定義乙個靜態的指向本類的指標minstance,在類外對其進行初始化。由於將類的建構函式宣告成了private,那麼就意味著只能通過成員函式來呼叫單例類的建構函式,而不能在類外呼叫。所以要獲取單例類的例項,只能通過類中的getinstance()方法來得到,第一次呼叫時執行new singleton(),而之後再呼叫時,minstance已經不為空,可以直接返回minstance。而當需要呼叫單例類中的成員函式時,需要先得到單例類的minstance指標,再呼叫成員函式。
C 實現單例模式
給所需要進行單例的類ctest的建構函式宣告為private或者protected 防止在類外隨意生成ctest的物件 然後宣告乙個靜態成員變數 instance 乙個靜態成員函式getinsance staticctest getinstance staticctest instance 靜態成員...
C 實現單例模式
ifndef singleton h define singleton h include include using namespace std class locker inline locker inline void lock inline void unlock private pthre...
C 實現單例模式
class singleton 私有建構函式 singleton const singleton 拷貝建構函式,只宣告不定義,這要當使用者或友元想要拷貝構造該類的已存在例項時會出錯。singleton operator const singleton 賦值運算子,只宣告不定義,作用同上 public...