來自C 的終級老單例

2021-08-21 04:18:41 字數 824 閱讀 8909

乙個可繼承的單例模式。

這是可被繼承的基類

templateclass singleton

singleton &operator=(const singleton&) = delete;

protected:

singleton(){}

public:

static t* instance()

private:

static t *t;

};templatet* singleton::t = new t();

這是測試用例

#include#include"singleton.h"

class a : public singleton

protected:

a(){}

};int main()

之前看設計模式書上沒有這個用法,最近做專案看到了,開啟了新世界的大門。這個模板基類,很有想法。   這也是模板程式設計的魅力。不用模板程式設計,基本寫不出這種父類——想想看,父類要有static virtual instance函式,才能同時達到可instance函式可被通過類訪問且可被繼承。但現實中static virtual函式是不能通過編譯的,

有幾點要注意的。

第一, = delete是c++11中新加的用法,如果是老版本的c++,請把賦值建構函式和賦值運算子的過載函式定義為private,效果一樣。

第二,要把子類的建構函式宣告為protected,同時把父類宣告為友元類,這樣,父類可以建立子類,而其他人則不行。

我心中較完美的一種。

c 單例的實現

單例的實現有很多的坑,並不是簡單的乙個static的成員獲取就算是單例了,下面詳細敘述下它的坑。懶漢模式 class singleton 懶漢模式在一般使用下都不會有問題,但是,這個實現是執行緒不安全的。區域性靜態變數static singleton minstance 編譯器會在編譯時期對其做處理...

C 的單例模式

單例模式可能是使用最廣泛的設計模式,其意圖是保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式有很多實現方法,在c 中,甚至可以直接用乙個全域性變數做到這一點,但是這樣的 顯得很不優雅。設計模式 一書中給出了一種很不錯的實現,定義乙個單例類,使用類的私有靜態指標變數指向類的唯一例項,並...

單例銷毀 C 單例模式的模板實現

單例模式是一種建立型的設計模式 creational design patterns 使用單例模式進行設計的類在程式中只擁有乙個例項 single instance 這個類稱為單例類,它會提供乙個全域性的訪問入口 global access point 關於單例模式的討論可以參考singleton ...