ACE学习手记--- 智能指针(ACE_Auto_Ptr / ACE_Refcounted_Auto_Ptr)

 ACE库提供的智能指针的功能是相当强大的。主要有

ACE_Auto_Ptr

ACE_Refcounted_Auto_Ptr

ACE_Intrusive_Auto_Ptr

三个智能指针,其中用的比较多的却容易使用的是前面2个。最后一个需要在自己的类中实现一些规定的函数。在这里主要介绍前面2个指针的使用。

 

ACE_Auto_Ptr <X>

 

ACE_Auto_Ptr 更像RAII的应用一样。资源初始化即获取及其释放的C++惯用手法。也即ACE_Auto_Ptr 会拥有一个指向X对象的指针,并且在ACE_Auto_Ptr 退出作用于(生命期结束)时会自动是否X指针的资源。

如果在用户的应用程序不想删除X对象的指针,那么必须在ACE_Auto_Ptr 生命期结束时必须自己手动release掉X对象的指针。

ACE_Auto_Ptr不是基于引用计数的。当把一个ACE_Auto_Ptr对象赋值给另外一个ACE_Auto_Ptr对象时X对象的指针的所有权会发生转移。也就是X对象的指针有且仅有一个ACE_Auto_Ptr可以拥有该指针。

 

 

ACE_Refcounted_Auto_Ptr 是一个基于引用技术的智能指针,多个ACE_Refcounted_Auto_Ptr对象可以指向同一个X对象的指针。该智能指针提供的功能和ACE_Auto_Ptr大体相当。不同之处在于何时删除 智能指针所管理的X对象的指针。

在所有执行同一个X对象指针的ACE_Refcounted_Auto_Ptr 对象生命期结束时,才删除X对象的指针。

  1. /**
  2.  * @class ACE_Auto_Basic_Ptr
  3.  *
  4.  * @brief Implements the draft C++ standard auto_ptr abstraction.
  5.  * This class allows one to work on non-object (basic) types
  6.  */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值