栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

[Effective C++]条款15:在资源管理类中提供对原始资源的访问

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Effective C++]条款15:在资源管理类中提供对原始资源的访问

  • APIS 往往要求访问原始资源,所以每一个 RAII class 应该提供一个取得其原始资源的方法
  • 对原始资源的访问可能经由显式转换或隐式转换。一般而言显式转换比较安全,但隐式转换对客户比较方便

资源管理类是对抗资源泄露的堡垒。但是由于许多 APIs 会直接使用资源,所以需要一个函数可将 RAII class 对象转换为其内含的原始资源,有两个做法可以达成目标:

显式转换:提供一个成员函数返回原始资源

隐式转换:提供一个隐式转换函数 “operator 原始资源类型()” 使资源管理类型能够隐式转换为原始资源类型

tr1::shared_ptr 和 auto_ptr 都提供一个 get 成员函数,用来执行显式转换,会返回其原始资源的副本。

tr1::shared_ptr 和 auto_ptr 也重载了 operator* 和 operator->,它们允许隐式转换至底部底部原始指针。

提供一个隐式转换函数会让客户使用时比较轻松自然,但是会增加出错的概率。我们应该遵循条款18的忠告:让接口容易被正确使用,不易被误用。因此通常情况下提供一个显式转换函数是比较受欢迎的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号