boost智能指针重塑订阅者模式

本文介绍了Boost库中的智能指针,包括scoped_ptr、shared_ptr、weak_ptr等,强调它们在对象生命周期管理和订阅者模式中的作用。特别讨论了如何利用weak_ptr检查对象的有效性,以及在避免内存泄漏方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

boost智能指针:

       scoped_ptr            <boost/scoped_ptr.hpp>简单的单一对象的唯一所有权。不可拷贝。//一旦离开作用域所指对象立即释放
       scoped_array       <boost/scoped_array.hpp>简单的数组的唯一所有权。不可拷贝。//管理数组
       shared_ptr             <boost/shared_ptr.hpp>在多个指针间共享的对象所有权。//指向一个对象该对象的引用计数加1,当引用计数将为0时所指对象立即被销毁,用于管理对象生命周期。可复制。
       shared_array        <boost/shared_array.hpp>在多个指针间共享的数组所有权。//管理数组
       weak_ptr                <boost/weak_ptr.hpp>一个属于 shared_ptr 的对象的无所有权的观察者。//弱引用,不增加对象的引用计数,但可以提升为shared_ptr因此可以通过提升判断对象是否还存活,若提升失败则所指对象不存在。提升操作是线程安全的。可复制。
       intrusive_ptr          <boost/intrusive_ptr.hpp>带有一个侵入式引用计数的对象的共享所有权。

       这些只能指针指向被管理的对象A,且这些指针本身就是对象(带有计数并指向对象A的指针对象),这些指针都是值语义即其拷贝操作对原来无关,要么是栈对象、其它对象数据成员、容器元素。

    使用方法:

        shared_ptr<T> one(new T);//声明并初始化一个指向T类型对象的智能指针,,值语义:share_ptr<T> two=one。

    几个比较重要的成员函数: 

             *one成为所指对象的引用即可用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值