C 單例模式使用

2021-07-30 02:29:48 字數 863 閱讀 4124

一直以來都沒有細細的看過設計模式,今天借助部落格來記錄一下學習過程。單例模式,是這些設計模式中最常用的一種模式,之前我們可能使用過全域性或者靜態變數的方式,現在可以考慮單例模式了。

單例模式主要是在一些工具類使用較多,因為工具類基本不用儲存太多的跟自身有關的資料,這種情況下,如果每次都new乙個物件,增加了開銷,其實這就只需要例項乙個物件。全域性變數或者靜態變數的方式,對封裝性有影響。

將預設的建構函式宣告為私有的,這樣就不會被外部所new.

此外在使用c++單例模式中較重要的乙個細節就是要注意單執行緒和多線

程和多執行緒的區別。

class singleton

;//類後面加的;

singleton::singleton()

//類中的靜態成員變數要在類體外進行定義

singleton* singleton::p=0;

int main()

上面的**是乙個單執行緒下的例子,不過這個方法是執行緒不安全的,如果兩個執行緒同時呼叫getinstance()方法時,同時檢測到p是乙個null值,則兩個執行緒會同時例項,這就是有問題了。

餓漢模式,餓漢模式的實現本來就是執行緒安全的(思考點,空間換時間)。

class singleton

private:

static singleton* p;

public:

static singleton* getinstance();

};singleton* singleton::p=new singleton;

singleton* singleton::getinstance()

C 單例模式使用

單例模式的類就是在乙個程序中只建立乙個全域性的例項來使用。可以封裝乙個巨集來方便地進行函式呼叫。單例模式的建構函式和析構函式都為類的private函式。對外提供乙個static方法來獲取類的例項。這樣類的例項就無法被其他的類所建立,只能通過對外的static介面來建立該類的例項。namespace ...

C 單例模式

include using namespace std 單例類的c 實現 class singleton 構造方法實現 singleton singleton void singleton setvar int var main int main int argc,char argv return ...

C 單例模式

實現方式一 include template typename t class singleton boost noncopyable static void init private static pthread once t ponce statict value template typena...