Effective C++阅读笔记②

三、资源管理

Resource Management

13:以对象管理资源

Use objects to manage resources
1、像auto_ptr、share_ptr那样管理对象
2、auto_ptr被销毁时会自动删除所指对象,所以不要让多个autp_ptr指向同一个对象。如果以copy构造函数或者copy_assignment操作符复制他们,他们会变为null,而复制所得的新的指针或获得资源的唯一拥有权。STL容器容不得auto_ptr。
3、share_ptr属于RCSP(reference-counting smart pointer 引用型计数指针),但是不能打破环形引用。
4、auto_ptr和share_ptr都在析构函数内做delete操作,但不是delete[],所以不能让他们指向数组。Boost库中拥有可以指向数组的智能指针。

14、在资源管理类中小心copying行为

Think carefully about copying behavior in resource-managing classes
1、share_ptr允许指定删除器,能够自定义删除操作。
2、复制RAII(Resource Acquisition Is Initialization,资源取得时机便是初始化时机)对象必须一并复制它所管理的对象。

15、在资源管理类中提供对原始资源的访问

Provide access to raw resources in resource-managing classes
对原始资源的访问可能经由显示转换或隐式转换,隐式转换更方便但是不安全。

16、成对使用new和delete时要采取相同形式

Use the same form in correspinding uses of new and delete
new与delete搭配,new[ ]与delete[ ]搭配,为避免出错,尽量不要对数组进行typedef操作。

17、以独立语句将newed对象置入智能指针

Store newed objects in smart pointers in standalone statements
以独立语句将newd对象存储于智能指针内,如果不这样做,一旦异常被抛出,有可能导致难以察觉的资源泄露。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值