boost的单件工具类

源码见文章底部。

class singleton<T> 声明了一个静态引用     static T & m_instance;

这个静态引用是用来干嘛的呢?注意到该文件末尾有如下代码:

template<class T>
T & singleton< T >::m_instance = singleton< T >::get_instance();
读到这里应该大概能理解了,该引用只是为了使用static的特性,该全局对象在程序初始化之前就进行了实例化了对象。

单例函数get_instance()方位属性为private。内部有如下定义         class singleton_wrapper : public T {};将T的构造函数保护了起来。先将静态成员赋值然后在堆中构造对象,静态成员指向他。

is_destroyed()主要作用是对生命周期做控制管理。

而template <class T>   static void use(T const *) 只是为了消除未初始化的警告,可参考另一工具类

boost::template <typename... Ts>void ignore_unused()的使用。最后调用构造生成实例对象并返回其引用。

        // refer to instance, causing it to be instantiated (and
        // initialized at startup on working compilers)
        BOOST_ASSERT(! is_destroyed());

        // note that the fo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值