C 單例模式

2021-10-23 01:45:39 字數 1244 閱讀 9492

單例模式也稱為單件模式、單子模式,是使用最廣泛的設計模式之一。其意圖是保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點,該例項被所有程式模組共享

單例模式通過類本身來管理其唯一例項,這種特性提供了解決問題的方法。唯一的例項是類的乙個普通物件,但設計這個類時,讓它只能建立乙個例項並提供對此例項的全域性訪問。唯一例項類singleton在靜態成員函式中隱藏建立例項的操作。習慣上把這個成員函式叫做instance(),它的返回值是唯一例項的指標

#include

#include

using namespace std;

class singleton

return instance;

}void

init

(int num, string str)

void

display()

//銷毀例項,資源**

void

destroy()

}private:

singleton()

//建構函式為私有

~singleton()

//析構函式為私有

//靜態資料成員,類中宣告,類外必須定義

static singleton *instance;

int a;

string buf;};

//靜態資料成員,類外定義

singleton *singleton:

:instance =

null

;int

main()

執行結果:

使用者訪問唯一例項的方法只有getinstance()成員函式。如果不通過這個函式,任何建立例項的嘗試都將失敗,因為類的建構函式是私有的。getinstance()使用懶惰初始化,也就是說它的返回值是當這個函式首次被訪問時被建立的。這是一種防彈設計——所有getinstance()之後的呼叫都返回相同例項的指標。

1、它有乙個指向唯一例項的靜態指標instance,並且是私有的;

2、它有乙個公有的函式,可以獲取這個唯一的例項,並且在需要的時候建立該例項;

3、它的建構函式是私有的,這樣就不能從別處建立該類的例項。

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...

C 單例模式

效率有點低,但是還算安全的單例模式,靜態成員實現方式 class singleton public static singleton getinstance singleton singleton getinstance unlock return m instance 內部靜態例項的懶漢模式,c ...