SINGLETON宏定义浅析
来源:互联网 发布:c语言数组视频 编辑:程序博客网 时间:2024/05/01 22:25
强弱引用
singleton模式的宏定义
factory模式
单例类的使用
#include "boost/shared_ptr.hpp"
#include "boost/make_shared.hpp"
#define DECLARE_SINGLETON(ClassName); \
public: \
static boost::shared_ptr<ClassName>& Instance(void); \
private: \
static boost::shared_ptr<ClassName> instance_; \
public: \
#define DEFINE_SINGLETON(ClassName) \
boost::shared_ptr<ClassName> ClassName::instance_; \
boost::shared_ptr<ClassName>& ClassName::Instance(void) \
{ \
if(!instance_){ \
instance_ = boost::make_shared<ClassName>(); \
} \
return instance_; \
} \
使用时利用ClassName:Instance()可以获取全局单例类,因为是make_shared 创建出来的,所以,在脱离作用域后,引用不在,当所有的强引用析构后
创建出来的单例instance_析构,当所有的强引用和弱引用都析构后,引用计数器析构。
singleton模式的宏定义
factory模式
单例类的使用
#include "boost/shared_ptr.hpp"
#include "boost/make_shared.hpp"
#define DECLARE_SINGLETON(ClassName); \
public: \
static boost::shared_ptr<ClassName>& Instance(void); \
private: \
static boost::shared_ptr<ClassName> instance_; \
public: \
#define DEFINE_SINGLETON(ClassName) \
boost::shared_ptr<ClassName> ClassName::instance_; \
boost::shared_ptr<ClassName>& ClassName::Instance(void) \
{ \
if(!instance_){ \
instance_ = boost::make_shared<ClassName>(); \
} \
return instance_; \
} \
使用时利用ClassName:Instance()可以获取全局单例类,因为是make_shared 创建出来的,所以,在脱离作用域后,引用不在,当所有的强引用析构后
创建出来的单例instance_析构,当所有的强引用和弱引用都析构后,引用计数器析构。
1 0
- SINGLETON宏定义浅析
- 宏定义单例(singleton)
- C语言宏定义浅析
- 云计算定义浅析
- class CV_EXPORTS_W 定义浅析
- Java单例模式浅析 (Singleton模式)
- class CV_EXPORTS_W VideoCapture定义浅析
- 回归基础,浅析加密算法定义
- Singleton
- Singleton
- singleton
- Singleton
- Singleton
- Singleton
- Singleton
- Singleton
- Singleton
- Singleton
- leetcode 32 Longest Valid Parentheses
- XENSERVER虚拟端口IP设置
- JSON解析学习笔记(json、gson、fastjson)
- POJ--2485
- BZOJ 1968: [Ahoi2005]COMMON 约数研究
- SINGLETON宏定义浅析
- 每个人都能徒手写递归神经网络–手把手教你写一个RNN
- 网络编程(二):TCP段格式中的URG与PSH到底有什么不同?
- SQLserver表字段修改后的保存
- 第4章 例题4-1 古老的密码(UVa1339)
- JAVA集合容器--Vector
- spring四种依赖注入方式
- source.android.com-source-overview
- R语言之朴素贝叶斯算法应用