C 單例模式的實現

2021-10-09 19:16:28 字數 1655 閱讀 4377

1 單例模式

1)概念:乙個類只能建立唯一乙個物件。並提供它的訪問方法。

2)實現思路

禁止在類的外部建立物件:私有化建構函式

在類的內部維護唯一的物件 :靜態成員變數。

提供單例物件的訪問方法:通過乙個靜態成員函式。

3)建立方式

餓漢式:

單例物件無論用或不用,程式啟動即建立。

懶漢式:

單例物件用時再建立,不用即銷毀。

4)總結優缺點

餓漢式 : **實現簡單,多執行緒安全,訪問效率高,在程式裝載的時候就建立了物件。

浪費記憶體,以空間(記憶體)換時間

懶漢式 : 節省記憶體,以時間換空間。

訪問效率低,多執行緒需要加鎖保護,**實現相對複雜。

2. 基於餓漢式的實現

#include

using

namespace std;

class

singleton

private

://1私有化建構函式(包括拷貝構造)

singleton

(int data =0)

:m_data

(data)

//拷貝建構函式也宣告為私有的

singleton

(const singleton&

)//2使用靜態成員變數表示唯一的物件

static singleton s_instanc;

~singleton

(void

)private

:int m_data;};

singleton singleton::

s_instanc

(100);

intmain

(void

)

#include

using

namespace std;

class

singleton

s_count ++

;return

*s_instanc;

}void

release

(void)}

void

print

(void

)const

static

int s_count;

private

://1私有化建構函式(包括拷貝構造)

singleton

(int data =0)

:m_data

(data)

//拷貝建構函式也宣告為私有的

singleton

(const singleton&

)//2使用靜態成員變數表示唯一的物件

static singleton* s_instanc;

~singleton

(void

)private

:int m_data;};

singleton* singleton::s_instanc =

null

;int singleton::s_count =0;

intmain

(void

)

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