單例模式
一個類不管創建多少次物件,永遠只能得到該型別一個物件的實體
常見例子:日志模塊,資料庫模塊
兩種單例模式:
-
餓漢式單例模式:還沒有獲取實體物件,實體物件就已經產生了(是執行緒安全的)
-
懶漢式單例模式:唯一的實體物件直到第一次獲取他的時候才產生,把物件的實體化延遲到第一次獲取該實體物件的時候才建構式
class Singleton //餓漢式單例模式
{
public:
static Singleton* getInstance()//#3 獲取類的唯一實體物件的
{
return &instance;
}
private:
static Singleton instance; //#2 定義一個唯一的類的實體物件
Singleton()//#1 建構式私有化
{
}
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
};
Singleton Singleton::instance;//靜態成員要在類外宣告
int main()
{
Singleton* p1 = Singleton::getInstance();
return 0;
}
class Singleton//懶漢式單例模式
{
public:
static Singleton* getInstance()
{
static Singleton instance;//在第一次呼叫該句的時候才會呼叫構造方法
return &instance;
}
private:
Singleton()
{
cout << ++a;
}
int a = 0;
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/484316.html
標籤:C++
上一篇:C++輸入輸出練習
下一篇:堆疊、佇列總結
