EffectiveC++-条款15:在资源管理类中提供对原始资源的访问

本文探讨了如何在API设计中处理原始资源访问,强调了资源管理类提供显式和隐式转换的重要性。讨论了tr1::shared_ptr和auto_ptr的get功能,以及非智能指针类的处理方式,提醒读者隐式转换潜在风险。
摘要由CSDN通过智能技术生成

一. 内容

  1. 许多 APIs 需要直接引用资源,而不是通过资源管理类。虽然它们不合规范,但很难避免使用它们。所以资源管理类应该提供访问原始资源的能力
  2. tr1::shared_ptr 和auto_ptr 都提供一个 get 成员函数,用来执行显式转换,也就是它会返回:智能指针内部的原始指针的副本
  3. tr1::shared_ptr 和auto_ptr 也重载了 operator->operator*,允许隐式转换至原始指针。
  4. 对于非智能指针管理类,可以编写 get() 函数,提供显式转换,重载operator xxx(),提供隐式转换。
  5. 记住隐式转换可能存在问题,虽然它比较直观。

二. 总结

  1. APIs往往要求访问原始资源(raw resources),所以每一个RAII class应该提供一个取得其所管理资源的方法。
  2. 对原始资源的访问可能经由显式转换或隐式转换。一般而言显式转换比较安全,但隐式转换对客户比较方便。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值