一. 内容
- 许多 APIs 需要
直接引用资源
,而不是通过资源管理类。虽然它们不合规范,但很难避免使用它们。所以资源管理类应该提供访问原始资源的能力
。 - tr1::shared_ptr 和auto_ptr 都提供一个
get
成员函数,用来执行显式转换,也就是它会返回:智能指针内部的原始指针的副本
。 - tr1::shared_ptr 和auto_ptr 也重载了
operator->
和operator*
,允许隐式转换至原始指针。 - 对于非智能指针管理类,可以编写 get() 函数,提供显式转换,重载operator xxx(),提供隐式转换。
- 记住
隐式转换可能存在
问题,虽然它比较直观。
二. 总结
- APIs往往要求访问原始资源(raw resources),所以每一个RAII class应该提供一个取得其所管理资源的方法。
- 对原始资源的访问可能经由显式转换或隐式转换。一般而言显式转换比较安全,但隐式转换对客户比较方便。