- 1、本文档共36页,可阅读全部内容。
- 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 读书笔记版
因为手头只有Scott的第二版 《Effective C++》电子版和第三版纸质印刷版本。本想为了方便,以第二版为模板。仔细看来,二
者区别还是不小的,所以还是以第三版为模板。
第一章 从C转向C++
我应该算是从C到C++的典型了,虽然我不是什么老人,可是从我接触编程至今,区区6、7年间,我竟是用了5年多的C,而且一
直是在TC2.0的环境下。当我决心放弃TC 的时候 (2006年上半年),距C++之父BjarneStroustrup所著的《TheC++Programming
Language》问世已经过了21年了,距ScottMeyers的 《EffectiveC++》第一版也已16年之久,想来不禁为自己的后知后觉感到
惭愧。
条款01:视C++为一个语言联邦
凭个人体会,不同背景的人会将C++看作不同的语言,正应了“横看成岭侧成峰,远近高低各不同”。
C++时代,对于C程序员最大的幸事和不幸都是基于一点:C++ C,我可以抱残守缺,认为C就是C++。
当然,大多数C程序员并不会这么做,起码,我不会一直这么做。我首先会积极地用class替代struct,然后试着自定义constructors
和destructors,用protected和virtual……
这样大概过了半年,我就从一个Structrue-Oriented coder进化成了一个Object-Oriented coder。
现在,为了工作的方便,在没有经过任何理论学习的情况下,我开始使用STL,却没有去深入探寻STL源代码。当然,我知道这是
不够的,也是不好的,等我把 《Effective C++》看得更好一些,我就去看Template和STL。
条款02:尽量以const、enum、inline替换#define
尽量用编译器而不用预处理,作者这样说的原因是因预处理造成的bugs如果在编译时暴露,那将是非常难揪的,尤其是带参数的
宏:
#define max(a,b) ((a) (b) ? (a) : (b))
int a 5, b 0;
max(++a, b); // a 的值增加了2次
max(++a, b+10); // a 的值只增加了1次
原因就在于上述语句在预处理时被处理成:
((++a) (b) ? (++a) : (b));
((++a) (b+10) ? (++a) : (b));
危险啊!
即使我可以凭借丰富的经验避免上述错误,但违反OO原则的帽子我是不愿戴的,所以我更愿意用inline函数来代替带参的宏。
即使我只使用无参数的宏,也不如多考虑用const或enum。在大多数情况下,用const (如果想保证一个类只有一个对应常量,就
用staticconst)来声明常量显然比#define来得高明,此时#define的优势在于其地址不能被获取,而const并不具备这一功能,
考虑一下enum吧,OK,问题迎刃而解。
第二版条款02:尽量用iostream而不用stdio.h
在C 中,scanf和printf的最大问题是其类型安全的不确定。经常遇到有朋友提出类似的困惑:为什么scanf的数据一团糟,为
什么printf的结果和预期的不一致?另一个问题是scanf和printf对于复杂的结构不能扩展使用。
至于使用iostream的理由,听听Scott怎么说吧: “iostream库的类和函数所提供的类型安全和可扩展性的价值远远超过你当
初的想象,所以不要仅仅因为你用惯了stdio.h而舍弃它。毕竟,转换到iostream后,你也不会忘掉stdio.h。”
条款03:尽可能使用const
尽可能使用const可能会让你多写很多个const,而且会在你试图改变被const修饰的 “变量”时报告一大堆bugs。然而,如果没
有了它们,就成了掩耳盗铃了吧?后果是不是不堪设想呢?很简单,你只需要看看const修饰的是谁,就知道谁不能被改变了。
对于返回const的函数,它是为了防止你或者别人对返回的对象进行写操作 (赋值)。
bitwise const成员函数保证了在函数内部任何成员 (static除外)都不会被改变,logical const则会给需要改变的成员变量在
声明时加上mutable关键字。
第二版条款03:尽量用new和delete而不用malloc和free
在C 中,我们谨记malloc和free是我们在使用指针时的忠实朋友,在C++中,我们需要为对象、为含有对象的对象进行内存分配
的时候,malloc和free就帮不了我们太
您可能关注的文档
- 2016年人教版初中英语中考复习知识点归纳总结.doc
- 2016年健康教育知识讲座(一).doc
- 2016年南开大学金融专硕考研复习心得(凯程学员刘yx).doc
- 2016年南开大学金融专硕考研复习心得(刘yx).doc
- 2016年南开大学金融专硕考研复习心得.doc
- 2016年南开大学金融专硕考研心得(刘yx).doc
- 2016年南开大学金融硕士考研复习心得(凯程学员刘yx).doc
- 2016年南开大学金融硕士考研复习心得(刘yx).doc
- 2016年南开大学金融硕士考研复习心得.doc
- 2016年南开金融硕士考研复习心得(凯程学员刘yx).doc
- 北师大版小学数学三年级上册《寄书》教学设计.docx
- 统编版(部编版)语文二年级上册《雪孩子》教学设计.docx
- 统编版(部编版)语文二年级上册《八角楼上》教学设计.docx
- 北师大版小学数学三年级上册《长方形周长》教学设计.docx
- 北师大版小学数学三年级上册《丰收了》教学设计.docx
- 统编版(部编版)语文二年级上册《夜宿山寺》教学设计.docx
- 统编版(部编版)语文二年级上册《风娃娃》教学设计.docx
- 统编版(部编版)语文二年级上册《朱德的扁担》教学设计.docx
- 统编版(部编版)语文二年级上册《难忘的泼水节》教学设计.docx
- 统编版(部编版)语文二年级上册《纸船和风筝》教学设计.docx
最近下载
- 第45届世界技能大赛平面设计技术项目.pdf
- 初中英语学困生的形成原因及对策研究结题报告.doc
- 暑假10以内加减法口算题天天练-每页100题(打印版).docx
- 高血压的中医调理方法.pptx
- 高考作文模拟写作:大树 藤蔓 依靠(附写作指导及范文点评与延伸训练).docx VIP
- 朋友圈要不要屏蔽父母辩论赛 反方辩词一辩、二辩、三辩、四辩发言稿.docx
- 湖南省三湘名校教育联盟2023-2024学年高二上学期11月期中联考物理试题(原卷).docx VIP
- 三《采用合理的论证方法》课件 2021-2022学年高中语文统编版选择性必修上册第四单元.pptx
- 跨学科主题学习——解密汉诺塔游戏 教学课件 电子工业版 五年级下册.ppt
- Project1 An animal book 获奖课件PPT译林版(一)英语二上.pptx
文档评论(0)