C++语言99个常见编程错误
2009
清华大学出版社
Stephen C. Dewhurst
275
高博
无
经过近一年的工作,这本几百页的小册子终于和大家见面了。 这本书从一个读者的角度来看,当然主要地可以视为是对于当之无愧的C++大师Stephenc.Dewhurst在近15年前原创的一本技术书籍的译作。但如果从译者的本意出发,它未尝不可以说是我本人10年来学习c++、领悟c++和运用C++的一个小结。2005年起,我开始陆、续在论坛中发表一些零碎的技术文章和翻译作品,并在企业和大学里作了一些演讲。和真正的一线工程师,以及即将踏上工程师岗位的同道们作了一些比较深入的交流之后,我才真真切切地感受到他们对于将书本知识转化为真正实力的那种热切的渴求。现在每年出版的有关C++的书籍车载斗量,但是如何能把这些“知识”尽可能多地转化成工程师手中对付真正的项目需求的“武器”?我感到自己负有责任来做一些工作,来对这个问题做出自己尝试性的解答。那么,最好的方式是创作一本新书吗?经过再三的权衡,我认为并非如此。作为一个未在C/C++Users Journal或是Dr.Dobb上发表过任何文字的人,原创很难企及自己欲达成的号召力。并且,原创的话就意味着要自己照顾一切技术细节,我绝没有自大到认为自己已经有了那种实力的程度。可是,是否仅仅再去翻译一本新的C++著作呢?那也不是。C++近几年来已不比往昔,新著作的翻译效率简直高得惊人,但单纯的翻译工作其实并不能消除读书人的费解。那么,我就想到:为什么不能挑选一本书,一方面将它翻译过来,另一方面以它作为“蓝本”,将自己的见解以笔记的形式融入其文字,并引导读者参读其他的技术书籍呢?对于某一个特定的技术细节,我希望达到的效果是:读者能够从我的翻译这“小小的一隅”扩展开去,从深度而言他们能够参阅其他专门就此发力的技术资料,获得某种技术或习惯用法的历史背景、推导逻辑、常见形式等翔实、全面、准确的信息;从广度而言,他们可以了解到编码与设计、细节与全局的关系,从而做到取舍中见思路、简化中见智慧,真正地把C++这种优秀的、有着长久生命力的程序设计语言背后的有关软件工程的科学和艺术的成分“提炼”出来,化为自己实实在在的内功提升。这样的工作,我才认为有它的价值所在,也是我这些年来下苦功夫研读了一二十种C++的高质量书籍,以及使用C++交付了一些成功的工程之后有实力完成的——这就是我创作本书的初衷和原动力——以技术翻译为主体,并进行“笔记体”的再创作给读者以诠释和阅读参考的附加值,这就是我的答案。
本书是C++大师Stephen C. Dewhurst在多年教授C++课程中所遇到的常见错误的心得笔记上编写而成的。本书所有章节都从一个众所周知的、在日常编码或设计实践经常遭遇的问题入手,先指出其不足,再对其背后思想中存在的合理与不合理之处深入剖析,最后取其精华弃其糟粕,给出一个简洁、通用、美轮美奂的方案,指出有关如何规避或纠正它们的建议,从而有助于C++软件工程师避免重蹈他们前辈的覆辙。
Stephen C. Dewhurst,是贝尔实验室里最早使用C++语言的人之一。他将C++应用于编译器设计、电子商务、嵌入式通信等领域已有18年以上的经验。他是“Programming in C++”一书的合作者,是“C/C++Users Journal”杂志的编辑,是“C++ Report”的专栏作家。他是两个C++编译器的作者,发表过大量有关编译器设计和C++语言编程技巧的论文。
译者序:技术翻译——一种笔记体式的创作尝试第1章 基础问 常见错误1:过分积极的注释 常见错误2:幻数 常见错误3:全局变量 常见错误4:未能区分函数重载和形式参数默认值 常见错误5:对引用的认识误区 常见错误6:对常量(性)的认识误区 常见错误7:无视基础语言的精妙之处 常见错误8:未能区分可访问性和可见性 常见错误9:使用糟糕的语言 常见错误10:无视(久经考验的)习惯用法 常见错误11:聪明反被聪明误 常见错误12:嘴上无毛,办事不牢 第2章 语法问题 常见错误13:数组定义和值初始化的语法形式混淆 常见错误14:捉摸不定的评估求值次序 常见错误15:(运算符)优先级问题 常见错误16:for 语句引发的理解障碍 常见错误17:取大优先解析原则带来的问题 常见错误18:声明饰词次序的小聪明 常见错误19:“函数还是对象”的多义性 常见错误20:效果漂移的类型量化饰词 常见错误21:自反初始化 常见错误22:静态连接类型和外部连接类型 常见错误23:运算符函数名字查找的反常行为 常见错误24:晦涩难懂的operato->第3章 预处理器问题 常见错误25:使用≠}denne定义的字面量 常见错误26:使用#define定义的伪函数(函数宏) 常见错误27:≠if的滥用 常见错误28:断言(assert宏)的副作用第4章 类型转换问题 常见错误29:以void*为类型转换的中介类型 常见错误30:截切问题 常见错误31:对目标类型为指涉物为常量的指针类型的类型转换的认识误区 常见错误32:对以指涉物为指向常量的指针类型的 类型为目标类型的类型转换的认识误区 常见错误33:对以指涉物为指向基类类型的指针类型的 类型为目标类型的类型转换的认识误区 常见错误34:指向多维数组的指针带来的问题 常见错误35:未经校验的向下转型 常见错误36:类型转换运算符的误用 常见错误37:始料未及的构造函数类型转换 常见错误38:在多继承条件下进行强制类型转换 常见错误39:对非完整类型做强制类型转换 常见错误40:旧式强制类型转换 常见错误41:静态强制类型转换 常见错误42:形式参数引发临时对象生成的初始化 常见错误43:临时对象的生存期 常见错误44:引用和临时对象 常见错误45:(动态强制类型转换运算符)dynamic-cast带来的多义性解析失败 常见错误46:对逆变性的误解第5章 初始化问题第6章 内存和资源管理问题第7章 多态问题第8章 类型设计问题第9章 继承谱系设计问题中英文术语对照表
无
这书里的错误都挺常见的,作为程序员,应该看看
可以帮我养成良好的编程习惯
还没看,有7年经验的老师傅说好
里面提到的问题非常具有代表性,初学者很适合
正在阅读,不错的书
很不错的书,看了有收获
发货速度还行,书质量不错。
买了这本,还没怎么看 但据说是很不错的书
快递 很给力 这么快就到了 顶下
活到老,学到老学习总没有错!
朋友推荐,现在已经看了一般了。good!相见恨晚啊
很没来得及看哪。
书的内容5星,对学习C++很有帮助,可以结合Effective C++系列一起看。唯一的缺陷是,这个包装我不喜欢,这么经典的一本书,外观看上去很土。
这本书的名字原来应该是《C++缺陷与陷阱》,属于经典系列的C++书
书内容不错,但是纸张不是怎么好
当当送货速度真不是盖的~
页码是乱的!本来是65页,结果一下到了17页!本来该第三章过了该第四章,结果是第一章和第二章。