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

本文探讨了在C++中使用RAII(Resource Acquisition Is Initialization)类进行资源管理时如何提供对原始资源的访问。通过智能指针如`unique_ptr`和`shared_ptr`的例子,解释了显式转换(如`get()`函数)和隐式转换(如重载`operator*`和`operator->`)的优缺点。强调了设计接口应易于正确使用且难以误用的原则,通常显式转换更安全,但隐式转换可能对用户更友好。每个RAII类都应该有一个方法来获取其所管理的资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
假期归来第一天!!!!学习起来up up up ღ( ´・ᴗ・` )ღ比心

由条款13导入一个例子:使用智能指针如auto_ptr
tr1: :shared ptr保存factory函数如createInvestment的调用结果:

std::tr1::shared_ ptr<Investment> pInv (createInvestment()); //见条款13

假设你希望以某个函数处理Investment对象,像这样:

int daysHeld (const Investment* pi) ;         //返回投资天数

你想要这么调用它:

int days = daysHeld (pInv) ;                  //错误!

却通不过编译,因为daysHeld需要的是Investment*指针,你传给它的却是个类型为tr1::shared_ ptr<Investment>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值