一个模板单例的实现
来源:互联网 发布:想学游戏编程 编辑:程序博客网 时间:2024/05/21 19:19
以前看过高手写的单例实现,也是利用继承模板基类来实现,最近正要用到单例模式,却苦于找不到以前高手的代码,于是就自己动手实现,代码如下
template<typename T>class Singletion{friend T;private:Singletion(){}virtual ~Singletion(){}static T* pObject;//利用此类析构函数释放单例实例内存class CCarbageCollector{public:~CCarbageCollector(){printf("~CCarbageCollector");if(Singletion<T>::pObject != NULL){delete Singletion<T>::pObject;printf("Object delete");}}};protected://提供给单例类的初始化接口virtual void Init()=0;public://获取单例inline static T* GetSingleton(){//用于系统退出时释放单例实例的内存static Singletion<T>::CCarbageCollector CarCo;pObject==NULL && (pObject=new T);return pObject;}};template<typename T>T* Singletion<T>::pObject = NULL;#define SINGLETON_INIT(ClassType)\friend ClassType* Singletion<ClassType>::GetSingleton();\friend Singletion<ClassType>::CCarbageCollector;\private:\ClassType(){Init();}\virtual ~ClassType(){}\virtual void Init()//单例class B:public Singletion<B>{SINGLETON_INIT(B){printf("Singleton Init");}};int _tmain(int argc, _TCHAR* argv[]){B *b = B::GetSingleton();//B bb; //->error//new B; //->error::system("pause");}
- 一个模板单例的实现
- singleton pattern的一个模板实现, 适用于单线程
- C++单例模板的实现
- 单例模板的简单实现
- 单例模板类的实现
- 一个单例的实现
- 一个单例模板【Singleton】
- 单例模式实现模板
- C++模板写的一个单例设计模式类
- 实现一个比较全面的单例
- 一个单例模式的实现
- 自己写的一个单例实现
- 【C++】单例模式的一种简单实现的模板
- 一个单件模式的模板
- C++单例模板类的实现和使用
- 单例模式的 模板方式实现 c++
- c++单例模式类模板的实现
- 一个精妙单例CSingleton的赏析------逐渐抽象为单例CSingleton模板
- 无法写入文件到 NFS目录
- C++ Unicode 写文件流问题
- Java IO流学习总结
- HTC one 移动TD版(M7CDTU) 与 国际版(M7UL)内核区别(从配置文件入手),草稿
- solib-absolute-prefix 和solib-search-path的区别
- 一个模板单例的实现
- uva 10400 Game Show Math
- Muye Game is Coming
- MyBatis两张表字段名相同产生的问题
- java实现ping命令
- cs661 11-14-2013{{{1
- c# 学习
- ORACLE实现字段自增示例说明
- 打印菱形星号