More Effective C++(中文版)
2011-1
电子工业出版社
梅耶
317
侯捷
无
C++ 是一门难学易用的语言! C++ 的难学,不仅在其广博的语法、语法背后的语义、语义背后的深层思维、深层思维背后的对象模型;C++ 的难学,还在于它提供了4种不同(相辅相成)的编程思维模型:procedural-based,object-based,object-oriented,generic paradigm。 世上没有白吃的午餐。又要有效率,又要有弹性,又要前瞻望远,又要回溯相容,又要能治大国,又要能烹小鲜,学习起来当然就不可能太简单。 在如此庞大复杂的机制下,万千使用者前赴后继的动力是:一旦学成,妙用无穷。 C++ 相关书籍之多,车载斗量,如天上繁星,如过江之鲫。广博如四库全书者有之(The C++ Programming Language、C++ Primer),深奥如重山复水者有之(The Annotated C++ Reference Manual, Inside the C++ Object Model),细说历史者有之(The Design and Evolution of C++, Ruminations on C++),独沽一味者有之(Polymorphism in C++, Genericity in C++),独树一帜者有之(Design Patterns, Large Scale C++ Software Design, C++ FAQs),程序库大全有之(The C++ Standard Library),另辟蹊径者有之(Generic Programming and the STL),工程经验之累积亦有之(Effective C++, More Effective C++, Exceptional C++)。 这其中,“工程经验之累积”对已具 C++ 相当基础的程序员而言,有着致命的吸引力与立竿见影的帮助。Scott Meyers 的Effective C++ 和 More Effective C++ 是此类佼佼,Herb Sutter 的 Exceptional C++ 则是后起之秀。 这类书籍的一个共同特色是轻薄短小,并且高密度地纳入作者浸淫于 C++/OOP 领域多年而广泛的经验。它们不但开扩读者的视野,也为读者提供各种 C++/OOP 常见问题或易犯错误的解决模型。某些小范围主题诸如“在base classes 中使用 virtual destructor”、“令operator= 传回 *this 的 reference”,可能在百科型 C++ 语言书籍中亦曾概略提过,但此类书籍以深度探索的方式,让我们了解问题背后的成因、最佳的解法,以及其他可能的牵扯。至于大范围主题,例如smart pointers,reference counting,proxy classes,double dispatching,基本上已属design patterns的层级! 这些都是经验的累积和心血的结晶! 我很高兴将以下两本优秀书籍,规划为一个系列,以郑重的形式呈现给您: 1.Effective C++ 2/e, by Scott Meyers, AW 1998 2.More Effective C++, by Scott Meyers, AW 1996 本书不但与英文版页页对译,保留索引,并加上译注、交叉索引 、读者服务 。 这套书将对于您的程序设计生涯带来重大帮助。翻译这套书籍的过程中,我感觉来自技术体会上的极大快乐。我祈盼(并相信)您在阅读此书时拥有同样的心情。
较少,页数倒是多了一些,原因是这次选材比“第一集”更高阶,尤其是第5章。Meyers将此章命名为技术(techniques),并明白告诉你,其中都是一些patterns,例如virtual constructors,smart pointers,reference counting,proxy classes,double dispatching……这一章的每个条款篇幅都达15~30 页之多,实在让人有“山重水复疑无路,柳暗花明又一村”之叹。 虽然出版年代稍嫌久远,但本书并没有第2版,原因是当其出版之时(1996),C++ Standard已经几乎定案,本书即依当时的标准草案而写,其与现今的C++ 标准规范几乎相同。而且可能变化的几个弹性之处,Meyers也都有所说明与提示。读者可以登录作者提供的网址,看看上下两集的勘误与讨论(数量之多,令人惊恐。幸好多是技术讨论或文字斟酌,并没有什么重大误失)。
作者:(美国)梅耶(Scott Meyers) 译者:侯捷Scott Meyers,世界顶级的C++软件开发技术权威之一。他是两本畅销书Effective C++和More Effective C++的作者,以前曾经是C++ Report的专栏作家。他经常为C/C++ Users Journal和Dr. Dobb's Journal撰稿,也为全球范围内的客户做咨询活动。他也是Advisory Boards for NumeriX LLC和InfoCruiser公司的成员。他拥有Brown University的计算机科学博士学位。侯捷,集计算机技术读物之著、泽、评于一身,足《多态与虚拟》和《STL源码剖析》的作者,《Run!Pc》杂志、《程序员》杂志的知名专栏作家,也是极其号召力的大学教师与研讨会讲师。他于1989年获得中国台湾清华大学动机系硕士学位。
译序(侯捷)导读(Introduction)基础议题(Basics) 条款1:仔细区别 pointers 和 references Distinguish between pointers and references. 条款2:最好使用 C++ 转型操作符 Prefer C++-style casts. 条款3:绝对不要以多态(polymorphically)方式处理数组 Never treat arrays polymorphically. 条款4:非必要不提供 default constructor Avoid gratuitous default constructors.操作符(Operators) 条款5:对定制的“类型转换函数”保持警觉 Be wary of user-defined conversion functions. 条款6:区别 increment/decrement 操作符的 前置(prefix)和后置(postfix)形式 Distinguish between prefix and postfix forms of increment and decrement operators. 条款7:千万不要重载&&,||和, 操作符 Never overload &&, ||, or ,. 条款8:了解各种不同意义的 new 和 delete Understand the different meanings of new and delete 异常(Exceptions) 条款9:利用 destructors 避免泄漏资源 Use destructors to prevent resource leaks. 条款10:在 constructors 内阻止资源泄漏(resource leak) Prevent resource leaks in constructors. 条款11:禁止异常(exceptions)流出 destructors 之外 Prevent exceptions from leaving destructors. 条款12:了解“抛出一个 exception”与“传递一个参数” 或“调用一个虚函数”之间的差异61 Understand how throwing an exception differs from passing a parameter or calling a virtual function. 条款13:以 by reference 方式捕捉 exceptions Catch exceptions by reference. 条款14:明智运用 exception specifications Use exception specifications judiciously. 条款15:了解异常处理(exception handling)的成本 Understand the costs of exception handling.效率(Efficiency) 条款16:谨记 80-20 法则 Remember the 80-20 rule. 条款17:考虑使用 lazy evaluation(缓式评估) Consider using lazy evaluation. 条款18:分期摊还预期的计算成本 Amortize the cost of expected computations. 条款19:了解临时对象的来源 Understand the origin of temporary objects. 条款20:协助完成“返回值优化(RVO)” Facilitate the return value optimization. 条款21:利用重载技术(overload)避免隐式类型转换(implict type conversions) Overload to avoid implicit type conversions. 条款22:考虑以操作符复合形式(op=)取代其独身形式(op) Consider using op= instead of stand-alone op. 条款23:考虑使用其他程序库 Consider alternative libraries. 条款24:了解 virtual functions、multiple inheritance、virtual base classes、 runtime type identification 的成本 Understand the costs of virtual functions, multiple inheritance, virtual base classes, and RTTI.技术(Techniques, Idioms, Patterns)杂项讨论(Miscellany)索引(一)(General Index)索引(二)(Index of Example Classes,Functions,and Templtes)
版权页:插图:我们终于抵达了最后一站。本章内含难以归类的准则。一开始的两个条款讨论C++软件开发过程如何设计出能够容纳日后变化的系统。是的,面向对象方法应用于系统构造的一个强大力量就是,它支持日后的变化。这些条款描述了一些特定步骤,你可以用来强化你的软件工事,抵抗这个拒绝停滞的世界带来的刀戟箭弩。接下来我将验证如何在同一个程序中结合C和C++。这个需求导致语言上的额外考虑,不过C++毕竟生存于真实世界之中,有时候我们必须面对这样的问题。最后,我把“C++标准规格”公开之后的各项语言变化做一番摘要整理。在此特别涵盖标准程序库中翻天覆地的大变化(亦请参考条款E49)。如果你未曾密切跟随标准化的脚步,对于这些变化可能会有很大的惊喜。是的,标准程序库中有许多让人愉悦的东西。条款32:在未来时态下发展程序 世事永远在变。 身为软件开发人员,我们可能不是知道得很多,但我们确切知道世事永远在变。我们不一定知道改变的是什么,改变如何到来,改变何时发生,或为什么会发生,但我们真的知道:事情会改变。好的软件对于变化有良好的适应能力。好的软件可以容纳新的性质,可以移植到新的平台,可以适应新的需求,可以掌握新的输入。软件具备如此的弹性、健壮性、可信赖度,并非是天上掉下来的礼物,而是那些“即使面对今天的束缚,仍然对明天可能的需求念兹在兹”的设计者和实现者共同努力的结果。
《Effective c++》(Scott Meyers第一本书)的荣耀:“对于任何渴望在中阶或高阶层面精通c++的人,我慎重推荐《Effective c++》,” ——(The C/C++User's Journal)
《More Effective C++:35个改善编程与设计的有效方法(中文版)》:传世经典书丛
无
More Effective C++(中文版) PDF格式下载
成书是在 Effective C++ 3ed 之前,所以书的内容有一部分与 Effective C++ 3ed重复,它在书内批的 E 也是指 Effective C++ 2ed。
而且书中一些指的特性在新版的C++标准中已经实现,尤其是在C++0X11标准中。
虽然有这些不足,但一点也不失做为经典的份量。
先前度过同事的effective c++,觉得很好,所以这本也不能错过,毕竟是一个作者写的,同一个人翻译的。
经典C++书籍,Effective C++的姊妹篇,看大家都评论就知道这本书的价值。非常值得拥有,即使不看,作为收藏也是不错的
Scott Meyers 的书 必看
看了她的前书 effective c++ 后果断买了这本书,今天看了一半 作者的视角确实很独特
Effective 和more Effective C++ 编程必备。。。
经典书籍,就是太贵了,很奇怪的是,effective c++有版本号,这本没有版本号!
先读Effective C++,再看看这本,会有不同的体会。如果有精力可以再看看C++ object model,功力大增。
Effective 总感觉是讲语法。而more effective 感觉是让人减少犯错误的机会。值得一读。
Effective C++的延续,非常值得一读
刚看完,Effective c ,现在接着看这本。好书
搭配effective c++一起看,不错的选择。。
和Effective C++一样棒,nice
该书能够给程序员好饿编程规范,并且在程序设计时能够更有效的进行编程,对于高级程序员来说非常值得一看
侯捷写的和侯捷译的书,一直是我在学习面向对象语言和思想时首选的书。
这本书需要一定的C++基础,但不算太深。
就目录表现出来的体系划分来说,比较适合从事软件开发3年左右的工程师研读。
能够帮助把自己的经验总结出来,让自己的思路和方向更清晰。
的确是一本好书。
适合有一定开发基础的C++程序猿,内容写的很好。侯捷老师的书,没说的
这个作者写的书还是蛮经典的,受教中啊!
网上关于这个的评价很多,非常经典的书籍,不用我细说了。c++编程必备
朋友推荐的,还有同一系列的书都不错
朋友推荐的书,内容不错。质量有待提高
很不错的书,对于c++编程来说,这本书可以让人觉得自己的编程水平上了一个层次。
经典书,以前有本老的丢了,现在在买一本
想要成为c++程序高手这本书必看,其中讲到很多c++程序设计时会遇到的问题,非常值得一读。
老师推荐,好东东,很喜欢
总结的经典,学好C++捷径之一。
这本书是专门讨论c++中的常见的问题,如内存,异常等话题。剖析得相当详细和深刻。可以进一步了解C++的博大魅力。
c++程序员必读的书
通过35个编程实例,展示专家经验,行文有趣
C++的经典,绝对是。对于增进C++的理解会大有易处。
经典著作,必须拥有啊
学了编程再提高
很好,很实用的一本书,很有技术含量
经典书藉,买着收藏也是必需的
经典的书啊经典的翻译
光放着就很让人舒服,很有分量,经典
这本书确实很经典!值得读!
很经典和一本书
看过几页,还是挺不错的,值得拥有
C++的经典书籍,讲解挺好,希望自己能学到里面的精华!!
经典的好书,需要认真研读!
和EffectiveC++一样,都是非常经典的
经典著作,不解释.
确实很经典。。。
看书要一步一步来,仔细看看吧
书很好,干净,这回可以好好看看了
研究C++的朋友绝对要去看看本书
c++坑很多,这本书教你如何躲坑,如何写出高质量的c++代码。
超级超级超级赞赞赞 值得程序员拜读
书的印刷质量还不错,内容那就不用多言,必读之书
对原作者和译都很喜欢,两个人都很有水平,候捷的书很好的
但是有点粗糙。内容没得说,但书实在是太脏,莫非是货架上那种人来人往你鄱我摸的那种?
刚看完 好书就是好。内容相当好,就是比上一版的贵。
温故而知新,没事看两眼
看了35款中的前两款,确实是平时不是很注意但是又比较重要的细节问题,值得一看
大师之作,必属精品,需细心阅读
豁然开朗的感觉,不愧为大师的手笔。
写代码的参考书
专家的经验,不仅是看一遍,结合经历或者动动手试一试效果更好
物流很快,书也是正版,赞一个
书到了,质量不错。坚持看完。
印刷不错,书的质量挺好。
不错的书,就是买重复了,不过可以退货,很不错
值得收藏下来的书,肯定要多看几遍的
几乎每一个C++进阶者必看的书
一直在当当上买书,一如既往的好啊
很好的书,这个就不用说了
应该是正版书 内容还没有看呢 应该不会差的
北京本地1天多到的货,包的还可以,书成色也很好
c++必备,值得深入研究的书
适合精通C++的人,对代码质量的提升很有帮助
好书自然不用多废话。。懂的人自然懂
非常好的一本书,就是送货速度有点慢
非常棒的一本书,绝对物超所值
很喜欢这本书,一直想买,果然很值。
这本书不说了,纸张和印刷不错。。。
早就听说这本书不错,终于买了
还没开始看,但读了不带more的那一本感觉不错,就把这本一起买了,纸张很舒服
金典图书,必修科目
值得一看!!!!高级
听师兄的建议,买回来一看
适合又一定基础的看,内容很有启发性。
送货很快,质量很发,精典不容错过!
等了好久不打特价,最后忍不住了
提升C++质量的必备书,很不错。
好书,绝对经典,值得收藏
虽然现在还是基础,不过慢慢看
老公买的,还没开始看的,希望对老公有很大帮助。
我是几年前买的第二版的effective c++,书的印刷各方面都很好。今日到手第三版的这本more effective C++,对书的质量很是失望。纸张非常毛糙,书的边缘切的也非常不好!,远不如第二版。电子工业出版社着实让人很失望!不如去买第二版了!
什么也不说了,读了才知道这本书有多么经典。
我没看过03年版本的,不知道这个版本侯先生重新修改过没。书刚到手几天,看了几十页,感觉有些文字翻译是可以改进滴。比如P32的“至于--操作符,故事一样。”P19的“所谓default constructor(也就是说不给任何自变量就可调用者)”。这只是个人看法,欢迎探讨。。。
书的内容无可厚非,书的质量有点问题
此书比effective C++作用更大。不要忽略。
经典,非常不错,C++程序员必读
侯捷+Scott Meyers,不要犹豫,就是他了
很有用的书,很好很强大
好。。。。。c++程序员必看
质量不错,买之前看了一下评论,差点没买。鄙视那些拿钱发帖的渣滓,祝你们全家得重病!
深入学c++的,推荐购买
不愧为大师所著 当我看到第一个问题 就解决了我内心里的一个问题····· 值得拥有 国外的书籍都是站在读者的角度出发的
前一本看过了,再看这本,经典