使用C 11的可變引數模板改造單例模式

2021-07-03 20:24:17 字數 751 閱讀 5895

本人以前寫過乙個c++的單例模式(見此 設計模式c++之單例

),想法很簡單,不值一提。

最近,看了c++11的新特性中有可變引數模板,想到是否可以以此來改造單例模式。參考了網上的一些經驗,寫了乙個大多數情況下可以通用的乙個單例模式,以此記錄。

template t>

class singleton

return m_pinstance;

}// 獲取單例

static t* getinstance()

// 刪除單例

static void destroyinstance()

private:

singleton();

virtual ~singleton();

private:

static t* m_pinstance;

};

最後,不要忘了最重要的初始化template t* singleton::m_pinstance = nullptr;

好了,至此,新的單例模式完成。由於使用了可變引數的模板,因此這個單例在大多數場合還是適用的(經過為數不多的驗證)。下面乙個例子:

class singletest

double sum()

private:

int m_ix;

double m_dy;

};void test()

C 11可變引數函式模板

在log時引數是型別和個數是不固定的,所以在做log函式時,很多煩惱,不過c 11給我們帶來的希望 include include using namespace std class logger static void makeloggeroff static bool loggerstate t...

c 11 之可變引數模板

目的 包含0到任意個模板引數 宣告可變引數模板需要在typename或class 後面加上省略號 一 可變引數模板函式 template void f t.args cout 可變引數展開有兩種方式 1.通過遞迴的模板函式來將引數展開 2.通過逗號表示式和初始化列表方式展開引數包 對於1介紹一種通過...

C 11可變引數函式模板

2013 04 27 13 34 4162人閱讀收藏 舉報 c 模板 25 c c 84 在log時引數是型別和個數是不固定的,所以在做log函式時,很多煩惱,不過c 11給我們帶來的希望 這個是今天剛讀到的,加上自己的理解為位元組寫了乙個logger類,也給大家瞧瞧啊,歡迎大蝦拍板轉 cpp vi...