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