单例
2016-05-11 16:49
375 查看
#ifndef __INCLUDE_SINGLETON_H__ #define __INCLUDE_SINGLETON_H__ #include <iostream> #include <string.h> #include <cstdlib> using namespace std; template<typename T> class Singleton { public: static T & GetInstance() { /*static T instance; /*局部静态对象,程序结束后自动调用析构函数*/ /*return instance;*/ Init(); return *instance_; } private: static void Init() { if ( instance_ == NULL) { instance_ = new T; atexit(Destory); } } static void Destory() { delete instance_; } Singleton() {} Singleton(const Singleton<T> &single) {} Singleton<T> & operator = (const Singleton<T> & sigle) {} ~Singleton() {} static T *instance_; }; template<typename T> T* Singleton<T>::instance_ = NULL; #endif //__INCLUDE_SINGLETON_H__ #include <iostream> #include "Singleton.h" using namespace std; class ApplicationImpl { public : ApplicationImpl() { cout<<"ApplicationImpl.."<<endl; } ~ApplicationImpl() { cout<<"~ApplicationImpl.."<<endl; } void Run() { cout<<"Run.."<<endl; } }; typedef Singleton<ApplicationImpl> App; int main() { App::GetInstance().Run(); App::GetInstance().Run(); return 0; }
相关文章推荐
- 关于JavaScript的事件触发
- classPath 三个文章连接
- 你确实应该学习并使用的 10 个 C# 特性
- epoll-4
- Hive vs. HBase
- sql server 查询性能最差的sql语句
- Storm入门 第二章准备开始
- .net动态解析xml和json
- JQuery中,html()、text()、val()区分
- Java Web开发-目录
- LoadRunner分析资源占用率
- Webview与原生交互传值
- [java]编程的智慧(转)
- 科目二曲线行驶技巧技术图解
- BNU 20950 ——沉重的货物 —————— · 最短路、最短边最大化」
- poj2955括号匹配 区间DP
- 【bzoj2878】[Noi2012]迷失游乐园 环套树概率dp
- ECSHOP session 的使用 注意事项 ,ecshop 批发 代码模式切换,普通会员特殊会员切换
- Redis高可用分布式
- BZOJ 1042: [HAOI2008]硬币购物