- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Effective C++和More Effective C++
More Effective C++读书笔记
条款1:指针与引用的区别二者之间的区别是:在任何情况下都不能用指向空值的引用,而指针则可以;指针可以被重新赋值以指向另一个不同的对象,但是引用则总是指向在初始化时被指定的对象,以后不能改变在以下情况下使用指针:一是存在不指向任何对象的可能性;二是需要能够在不同的时刻指向不同的对象在以下情况使用引用:总是指向一个对象且一旦指向一个对象之后就不会改变指向;重载某个操作符时,使用指针会造成语义误解
条款2:尽量使用C++风格的类型转换static_cast:功能上基本上与C风格的类型转换一样强大,含义也一样但是不能把struct转换成int类型或者把double类型转换成指针类型另外,它不能从表达式中去除const属性const_cast:用于类型转换掉表达式的const或volatileness属性但是不能用它来完成修改这两个属性之外的事情dynamic_cast:用于安全地沿着类的继承关系向下类型转换失败的转换将返回空指针或者抛出异常reinterpret_cast:这个操作符被用于的类型转换的转换结果时实现时定义因此,使用它的代码很难移植最普通的用途就是在函数指针之间进行转换
条款3:不要使用多态性数组多态和指针算法不能混合在一起使用,所以数组和多态也不能用在一起数组中各元素的内存地址是数组的起始地址加上之前各个元素的大小得到的,如果各元素大小不一,那么编译器将不能正确地定位元素,从而产生错误
条款4:避免无用的缺省构造函数没有缺省构造函数造成的问题:通常不可能建立对象数组,对于使用非堆数组,可以在定义时提供必要的参数另一种方法是使用指针数组,但是必须删除数组里的每个指针指向的对象,而且还增加了内存分配量提供无意义的缺省构造函数会影响类的工作效率,成员函数必须测试所有的部分是否都被正确的初始化
条款5:谨慎定义类型转换函数缺省的隐式转换将带来出乎意料的结果,因此应该尽量消除,使用显式转换函数通过不声明运算符的方法,可以克服隐式类型转换运算符的缺点,通过使用explicit关键字和代理类的方法可以消除单参数构造函数造成的隐式转换
条款6:自增和自减操作符前缀形式与后缀形式的区别后缀式有一个int类型参数,当函数被调用时,编译器传递一个0作为int参数的值传递给该函数可以在定义时省略掉不想使用的参数名称,以避免警告信息后缀式返回const对象,原因是 :使该类的行为和int一致,而int不允许连续两次自增后缀运算;连续两次运算实际只增一次,和直觉不符前缀比后缀效率更高,因为后缀要返回对象,而前缀只返回引用另外,可以用前缀来实现后缀,以方便维护
条款7:不要重载,||,或者,对 于以上操作符来说,计算的顺序是从左到右,返回最右边表达式的值如果重载的话,不能保证其计算顺序和基本类型想同操作符重载的目的是使程序更容易阅 读,书写和理解,而不是来迷惑其他人如果没有一个好理由重载操作符,就不要重载而对于,||和,,很难找到一个好理由
条款8:理解各种不同含义的new和deletenew操作符完成的功能分两部分:第一部分是分配足够的内存以便容纳所需类型的对象;第二部分是它调用构造函数初始化内存中的对象new操作符总是做这两件事,我们不能以任何方式改变它的行为我们能改变的是如何为对象分配内存new操作符通过调用operator new来完成必需的内存分配,可以重写或重载这个函数来改变它的行为可以显式调用operator来分配原始内存如果已经分配了内存,需要以此内存来构造对象,可以使用placement new,其调用形式为new(void* buffer)class(int size)对于delete来说,应该和new保持一致,怎样分配内存,就应该采用相应的办法释放内存operator new[]与operator delete[]和new与delete相类似
条款9:使用析构函数防止资源泄漏使用指针时,如果在delete指针之前产生异常,将会导致不能删除指针,从而产生资源泄漏解决办法:使用对象封装资源,如使用auto_ptr,使得资源能够自动被释放
条款10:在构造函数中防止资源泄漏类中存在指针时,在构造函数中需要考虑出现异常的情况:异常将导致以前初始化的其它指针成员不能删除,从而产生资源泄漏解决办法是在构造函数中考虑异常处理,产生异常时释放已分配的资源最好的方法是使用对象封装资源
条款11:禁止异常信息传递到析构函数外禁止异常传递到析构函数外的两个原因:第一能够在异常传递的堆栈辗转开解的过程中,防止terminate被调用;第二它能帮助确保析构函数总能完成我们希望它做的所有事情解
您可能关注的文档
- linux命令大全Nginx安装配置.docx
- linux如何查看rpm包的安装路径办法.docx
- Linux嵌入式开发学习指南之GCC工具.doc
- Linux必学的60个命令5(系统安全相关命令).docx
- linux文件名命名规则.docx
- Linux系统下gcc编程的基本使用教程.doc
- linux系统之vi命令.doc
- linux配置java环境变量(详细).docx
- LiteratureReview格式规范.doc
- liz中国饮食文化论文.doc
- 2024至2030年中国精密裁板合金主锯片行业投资前景及策略咨询研究报告.docx
- 2024年03月故宫博物院招考聘用笔试历年典型考题与考点剖析含答案详解.docx
- 2024年03月甘肃长春中医药大学附属医院定西医院(定西市中医医院)引进人才笔试历年典型考题与考点剖.docx
- 2024年03月浙江宁波市鄞州区公立学校招考聘用编外员工笔试历年典型考题与考点剖析含答案详解.docx
- 2024年03月长江海事局后勤管理中心2024年度公开招考10名工作人员笔试历年典型考题与考点剖析含.docx
- 2024至2030年太阳能双黄闪灯项目投资价值分析报告.docx
- 2024至2030年探人雷达项目投资价值分析报告.docx
- 2024年中国汽车计量器市场调查研究报告.docx
- 2024年中国拎袋市场调查研究报告.docx
- 2024至2030年中国超薄脚踏网行业投资前景及策略咨询研究报告.docx
最近下载
- 智慧医院-医务管理系统设计方案.pdf VIP
- 医务管理系统建设方案.doc VIP
- 石油 - GB-T 7631.10-2013 润滑剂、工业用油和有关产品(L类)的分类 第10部分:T组(涡轮机).pdf
- 2023年北京市中考英语试卷(附答案详解).docx VIP
- 《防止校园欺凌》ppt课件(图文).pptx
- 2024初中语文新部编版七年级上册全册核心素养教案.pdf VIP
- 数字电子技术3套考试题目(含答案) .pdf VIP
- 卡特彼勒C11 和C13 ON-HIGHWAY 发动机装配手册 英文.pdf VIP
- 设备管理思路及方案.docx
- 年产3万吨塑料制品、2万吨再生塑料颗粒项目环境影响报告表.doc
文档评论(0)