#include
"pch.h"
#include
#include
using
namespace std;
/*單例模式:乙個類不管建立多少次物件,永遠只能得到該型別乙個物件的例項
a *p1 = new a();
a *p2 = new a();
a *p3 = new a();
常用到的,比如日誌模組,資料庫模組
單例模式:
餓漢式單例模式:還沒有獲取例項物件,例項物件就已經產生了
懶漢式單例模式:唯一的例項物件,直到第一次獲取它的時候,才產生
*/#if 0
// 執行緒安全的懶漢式單例模式
class
singleton
private
:singleton()
// #1 建構函式私有化
singleton
(const singleton&)=
delete
; singleton&
operator=(
const singleton&)=
delete;}
;int
main()
#endif
#if 0
std::mutex mtx;
// 懶漢式單例模式 => 是不是執行緒安全的呢? => 執行緒安全的懶漢式單例模式
class
singleton
}return instance;
}private
:static singleton *
volatile instance;
// #2 定義乙個唯一的類的例項物件
singleton()
// #1 建構函式私有化
singleton
(const singleton&)=
delete
; singleton&
operator=(
const singleton&)=
delete;}
;singleton*
volatile singleton::instance =
nullptr
;int
main()
#endif
#if 0
// 餓漢式單例模式 一定是執行緒安全的
class
singleton
private
:static singleton instance;
// #2 定義乙個唯一的類的例項物件
singleton()
// #1 建構函式私有化
singleton
(const singleton&)=
delete
; singleton&
operator=(
const singleton&)=
delete;}
;singleton singleton::instance;
intmain()
#endif```
單例模式與執行緒安全單例模式(懶漢 餓漢)
直接就可以在靜態區初始化instance,然後通過getinstance返回,這種就被稱為餓漢式單例類。也有些寫法是在getinstance中new instance然後返回,這種就被稱為懶漢式單例類,但這涉及到第一次getinstance的乙個判斷問題。單例大約有兩種實現方法 懶漢與餓漢。懶漢 故...
C 的單例模式與執行緒安全單例模式(懶漢 餓漢)
1 教科書裡的單例模式 我們都很清楚乙個簡單的單例模式該怎樣去實現 建構函式宣告為private或protect防止被外部函式例項化,內部儲存乙個private static的類指標儲存唯一的例項,例項的動作由乙個public的類方法代勞,該方法也返回單例類唯一的例項。上 1 2 3 4 5 6 7...
C 的單例模式與執行緒安全單例模式(懶漢 餓漢)
單例模式 是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項。實現簡單的單例模式 建構函式宣告為private或protect防止被外部函式例項化,內部儲存乙個private static的類指標儲存唯一的例...