Effective C++(13-17)

13.以对象管理资源

   13.1 为防止资源泄漏,请使用RAII(Resource Acquisition Is Initialization,资源取得时机便是初始化时机)对象,它们在构造函数

           中获得资源并在析构函数中释放资源。

   13.2 两个常被使用的RAII class分别是tr1::shared_ptr和auto_ptr。前者通常是较佳选择,因为其copy行为比较直观。

           若选择auto_ptr,复制动作会使它(被复制物)指向null。

   13.3 auto_ptr的替代方案是“引用计数型智慧指针,reference-counting smart pointer,RCSP”,其持续追踪共有多少对象指向

           某笔资源,并在无人指向它时自动删除该资源。但RCSP无法打破环状引用(cycles of reference),如两个其实已经被使用的对

           象彼此互指,因而好像还处在“被使用”状态。

   13.4  CInvestment *pInv = CreateInvestment();

           std::auto_ptr<CInvestment> pInv1(pInv); //pInv1指向PInv

           std::auto_ptr<CInvestment> Pinv2(pInv1); //pInv2指向pInv,pInv1指向NULL

           pInv1 = pInv2; //pInv1指向PInv,pInv2指向NULL

 

           std::tr1::shared_ptr<CInvestment> pInv3(pInv); //pInv3指向pInv

           std::tr1::shared_ptr<CInvestment> pInv4(pInv3); //pInv3和pInv4指向同一对象pInv

           pInv3 = pInv4;                   //pInv3和PInv4指向同一对象

            

         

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值