Effective C++读书笔记(11)
来源:互联网 发布:飞耀速录软件 编辑:程序博客网 时间:2024/05/21 04:42
条款15:在资源管理类中提供对原始资源的访问
资源管理类需要一个函数可以将RAII class对象转移到其所包含的原始资源,可以通过显式转换或隐式转换完成。
显式转换:常在RAII class中定义一个get成员函数,用于返回RAII class内部的原始资源。也可以通过重载*或者->运算符。
隐式转换:重载类型转换运算符。
条款16:成对使用new和delete时要采取相同形式
如果在new表达式中用了[],必须在相应的delete表达式中也使用[]。如果在new表达式中未使用[],则一定不要在相应的delete中使用[]。(因此最好尽量不要对数组形式进行typedef操作)
条款17:以独立语句将newed对象置于智能指针
假设需要对一个资源置于智能指针中后进行某种操作。编写可以编译通过的语句如下:
processWidget(std::tr1::shared_ptr<Widget>(new Widget), priority());
由于C++核对实参的顺序是未知的(java和c#是已知的),因此上述语句可能造成资源泄露。例如以如下顺序核对实参:
1.执行“new Widget"
2.调用priority
3.调用tr1::shared_ptr构造函数
如果第2步异常,new Wighet返回的指针将会遗失,未放入智能指针,可能引发资源泄露。
解决方法:使用分离语句:
std:tr1::shared_ptr<Widget> pw(new Widget);processWidget(pw, priority());
0 0
- 《Effective C++》读书笔记
- 《Effective C++》读书笔记
- 《Effective c++》读书笔记
- 《more effective c++》读书笔记
- <<effective c++>> 读书笔记
- 《Effective C++》读书笔记
- 《Effective C++》读书笔记
- Effective C++(1)读书笔记
- Effective C++(2)读书笔记
- 《Effective C++》读书笔记
- 《Effective C++》读书笔记
- 《effective c++》读书笔记【一】
- 《effective c++》读书笔记1
- 《effective c++》读书笔记2
- 《effective c++》读书笔记3
- 《effective c++》读书笔记4
- 《effective C++》读书笔记
- Effective C++-读书笔记
- [Python]网络爬虫(11):亮剑!爬虫框架小抓抓Scrapy闪亮登场!
- C++遍历Vector的错误
- 当CityEngine中遇到双显卡时,这么搞一下就行。。。。
- python 自动补全
- 安卓应用运营知识:VersionCode和VersionName(转)
- Effective C++读书笔记(11)
- D的小L 全排列 STL
- 小P寻宝记
- 常用数据挖掘算法 - 决策树ID3&关联推荐Apriori &朴素贝叶斯NBC
- 纯粹透明背景的QGraphicsView
- Flip Game
- 汇编字符串处理指令stosb、lodsb、movsw、scasb、rep
- js中的null和undefined的区别
- 加密术