本人以前寫過乙個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...