Singleton 单例模板

 1 // singleton.h
 2 
 3 #ifndef SINGLETON_H
 4 #define SINGLETON_H
 5 
 6 // 单例基类模板
 7 template <class T>
 8 class Singleton
 9 {
10 public:
11     static T& give_me()
12     {
13         static T s_inst;
14         return s_inst;
15     }
16 
17 private:
18     // 禁止实现拷贝构造与拷贝赋值函数
19     explicit Singleton(const Singleton<T> &rhs);
20     Singleton<T>& operator = (const Singleton<T> &rhs);
21 
22 protected:
23     explicit Singleton()    {}
24     virtual ~Singleton()    {}
25 };
26 
27 #endif // SINGLETON_H
 1 #ifndef TEST_MANAGER_H
 2 #define TEST_MANAGER_H
 3 
 4 #include "singleton.h"
 5 
 6 class TestManager : public Singleton<TestManager>
 7 {
 8     friend class Singleton<TestManager>;
 9 
10 private:
11     explicit TestManager();
12     virtual ~TestManager();
13 
14 public:
15     void func();
16 };
17 
18 #endif // TEST_MANAGER_H
原文地址:https://www.cnblogs.com/suyunhong/p/4489116.html