C 實現單例模式

2021-07-03 14:33:56 字數 639 閱讀 5884

class singleton

//私有建構函式

singleton(const singleton &);//拷貝建構函式,只宣告不定義,這要當使用者或友元想要拷貝構造該類的已存在例項時會出錯。

singleton & operator= (const singleton &);//賦值運算子,只宣告不定義,作用同上

public:

//只有在呼叫singleton ::getinstance()時,例項才會被建立(按需建立),而且只會建立乙個例項

//該實現是執行緒安全的,因為不需要先判斷是否已存在該類的例項,再決定是否建立例項這樣的分步操作(因為如果兩個執行緒同時執行到判斷instance是否存在的if語句,並且instance的確沒有建立是,那麼兩個執行緒都會建立乙個例項,此時就不再滿足單例模式的要求了。)

static singleton *getinstance()

void display()//for test

int i;//for test

};int main(void)

注:如果getinstance返回的是引用,則使用者**的呼叫方式也應改為引用方式:

singleton &a = singleton::getinstance();

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 實現單例模式

關於單例模式的相關資料和博文非常多,原因不僅僅在於它作為設計模式的重要性,也在於各大公司筆試面試題出現概率之高讓人乍舌。正因為如此,通過這篇博文的書寫,加深自己對單例模式的理解,以不變應萬變。單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例類的特殊類。通過單例模式可以保證系統中...