C++实现一个单例模板类
2016-02-24 19:38
330 查看
单例模式在项目开发中使用得比较多,一个单例的模板类显得很有必要,避免每次都要重复定义一个单例类型
//非多线程模式下的一个单例模板类的实现
// template_singleton.h
#include <assert.h>
template<typename T>
class TSingleton{
protected:
TSingleton() {}
~TSingleton(){}
public:
static T& GetInstance();
static void ReleaseInstance();
private:
TSingleton(const TSingleton& kObj){}
TSingleton& operator=(const TSingleton& kObj){}
private:
static T *instance_ptr_;
};
template<typename T>
T* TSingleton<T>::instance_ptr_ = nullptr;
template<typename T>
T& TSingleton<T>::GetInstance(){
if (nullptr == instance_ptr_){
instance_ptr_ = new T;
assert(nullptr != instance_ptr_);
}
return *instance_ptr_;
}
template<typename T>
void TSingleton<T>::ReleaseInstance(){
if (nullptr != instance_ptr_){
delete instance_ptr_;
instance_ptr_ = nullptr;
}
}
//非多线程模式下的一个单例模板类的实现
// template_singleton.h
#include <assert.h>
template<typename T>
class TSingleton{
protected:
TSingleton() {}
~TSingleton(){}
public:
static T& GetInstance();
static void ReleaseInstance();
private:
TSingleton(const TSingleton& kObj){}
TSingleton& operator=(const TSingleton& kObj){}
private:
static T *instance_ptr_;
};
template<typename T>
T* TSingleton<T>::instance_ptr_ = nullptr;
template<typename T>
T& TSingleton<T>::GetInstance(){
if (nullptr == instance_ptr_){
instance_ptr_ = new T;
assert(nullptr != instance_ptr_);
}
return *instance_ptr_;
}
template<typename T>
void TSingleton<T>::ReleaseInstance(){
if (nullptr != instance_ptr_){
delete instance_ptr_;
instance_ptr_ = nullptr;
}
}
相关文章推荐
- C++ 中关于new的介绍
- C语言深度剖析-----数组与指针分析
- Python error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat)解决方案
- 使用c++实现一个FTP客户端(一)
- C语言常用转义字符表 和 ASCII码表
- 数组生成MaxTree——C++
- 《孙鑫vc++视频20集》【最后更新日期:16/04/20
- C++的一些注意事项
- C/C++ 中嵌入 arm 汇编
- C++学习笔记:虚析构函数
- 1038. Recover the Smallest Number (30)
- C++除法取整
- 汉诺塔与递归之C++ 和Python实现
- [C&C++]用WinSock封装自己的UDP类2
- C文件管理学习心得
- 实例讲解C++编程中的虚函数与虚基类
- 1037. Magic Coupon (25)
- 理解C++里面的const的一些用法
- 1036. Boys vs Girls (25)
- C++开发基础整理