Effective c++ iii

第13条:    要使用对象来管理资源。 [1]

l         为了避免资源泄露,可以使用 RAII 对象,使用构造函数获取资源,析构函数释放资源。

l         auto_ptr TR1::shared_ptr 是 两个常用并且实用的 RAII 类。通常情况 下 TR1::shared_ptr 是更好的选择,因为它的复制行为更加直观。复制一个 auto_ptr 将会使其重设为 null


第14条:    要留心资源管理类中的复制行为

l         复制一个 RAII 对象的同时也要复制其所管理的对象,所以资源管理的复制行为由 RAII 对象的复制行为决定,一般可能有四种行为:

1 禁止复制。 在许多情况下,允许 RAII 被复制没有任何意义。

2 为基础资源进行引用计数。 有时,我们期望能保留对一个资源的所有权,直到其所涉及的最后一个对象被删除为止。

3 复制主要的资源。 一些时候,你可以在需要的情况下为资源复制出任意份数的副本,此时你需要一个资源管理类的唯一理由就是:确保每份副本在其工作完成之后得到释放。

4 传递主要资源的所有权。 在少数情况下,你可能需要确保仅仅有一个 RAII 对象引用了一个未定义类型的资源,当复制这一 RAII 对象时,资源的所有权也从源对象传递到目标对象了。


第15条    要为资源管理类提供对原始资源的访问权, 因为你需要和传统C API函数通信。具体 访问方式可以通过显式转换或隐式转换来实现。一般情况下,显式转换更安全,但是隐式转换对于客户端程序员来说使用更方便。


[1] 这是C++最值得津津乐道的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值