科技>计算机>编程语言
MoreEffectiveC++:35个改善编程与设计的有效方法(中文版)

MoreEffectiveC++:35个改善编程与设计的有效方法(中文版)"

作者:侯捷
ISBN:9787121125706
定价:¥59.0
字数:500千字
页数:336
出版时间:2011-01
开本:16(185*230)
版次:01-01
装帧:
出版社:电子工业出版社
简介

继Effective C++之后,Scott Meyers于1996推出这本“续集”。条款变得比较少,页数倒是多了一些,原因是这次选材比“第一集”更高阶,尤其是第5章。Meyers将此章命名为技术(techniques),并明白告诉你,其中都是一些patterns,例如virtual constructors,smart pointers,reference counting,proxy classes,double dispatching……这一章的每个条款篇幅都达15~30 页之多,实在让人有“山重水复疑无路,柳暗花明又一村”之叹。 虽然出版年代稍嫌久远,但本书并没有第2版,原因是当其出版之时(1996),C++ Standard已经几乎定案,本书即依当时的标准草案而写,其与现今的C++ 标准规范几乎相同。而且可能变化的几个弹性之处,Meyers也都有所说明与提示。读者可以登录作者提供的网址,看看上下两集的勘误与讨论(数量之多,令人惊恐。幸好多是技术讨论或文字斟酌,并没有什么重大误失)。     读者对象:程序设计学习者和在职开发人员

前言

译序 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 本书不但与英文版页页对译,保留索引,并加上译注、交叉索引 、读者服务 。 这套书将对于您的程序设计生涯带来重大帮助。翻译这套书籍的过程中,我感觉来自技术体会上的极大快乐。我祈盼(并相信)您在阅读此书时拥有同样的心情。 侯捷 2003/03/07 于台湾新竹 jjhou@jjhou.com http://www.jjhou.com 本书保留大量简短易读之英文术语,时而中英并陈。以下用语请读者特别注意: 英文术语 本书译词 英文术语 本书译词 argument 自变量 (i.e. 实参) instantiated 实例化、具现化 by reference 传址 library 程序库 by value 传值 resolve 决议 dereference 解引(i.e. 解参考) parameter 参数 (i.e. 形参) evaluate 评估、核定 type 型别 (i.e. 类型) instance 实例 译注:借此版面提醒读者,本书之中如果出现“条款5”这样的参考指示,指的是本书条款5;如果出现“条款E5”这样的参考指示,E 是指 Effective C++ 2/e)

目录

目 录 译序(侯捷) ix 导读(Introduction) 001 基础议题(Basics) 009 条款1:仔细区别 pointers 和 references 009 Distinguish between pointers and references. 条款2:最好使用 C++ 转型操作符 012 Prefer C++-style casts. 条款3:绝对不要以多态(polymorphically)方式处理数组 016 Never treat arrays polymorphically. 条款4:非必要不提供 default constructor 019 Avoid gratuitous default constructors. 操作符(Operators) 024 条款5:对定制的“类型转换函数”保持警觉 024 Be wary of user-defined conversion functions. 条款6:区别 increment/decrement 操作符的 前置(prefix)和后置(postfix)形式 031 Distinguish between prefix and postfix forms of increment and decrement operators. 条款7:千万不要重载&&,||和, 操作符 035 Never overload &&, ||, or ,. 条款8:了解各种不同意义的 new 和 delete 038 Understand the different meanings of new and delete 异常(Exceptions) 044 条款9:利用 destructors 避免泄漏资源 045 Use destructors to prevent resource leaks. 条款10:在 constructors 内阻止资源泄漏(resource leak) 050 Prevent resource leaks in constructors. 条款11:禁止异常(exceptions)流出 destructors 之外 058 Prevent exceptions from leaving destructors. 条款12:了解“抛出一个 exception”与“传递一个参数” 或“调用一个虚函数”之间的差异 061 Understand how throwing an exception differs from passing a parameter or calling a virtual function. 条款13:以 by reference 方式捕捉 exceptions 068 Catch exceptions by reference. 条款14:明智运用 exception specifications 072 Use exception specifications judiciously. 条款15:了解异常处理(exception handling)的成本 078 Understand the costs of exception handling. 效率(Efficiency) 081 条款16:谨记 80-20 法则 082 Remember the 80-20 rule. 条款17:考虑使用 lazy evaluation(缓式评估) 085 Consider using lazy evaluation. 条款18:分期摊还预期的计算成本 093 Amortize the cost of expected computations. 条款19:了解临时对象的来源 098 Understand the origin of temporary objects. 条款20:协助完成“返回值优化(RVO)” 101 Facilitate the return value optimization. 条款21:利用重载技术(overload)避免隐式类型转换(implict type conversions)105 Overload to avoid implicit type conversions. 条款22:考虑以操作符复合形式(op=)取代其独身形式(op) 107 Consider using op= instead of stand-alone op. 条款23:考虑使用其他程序库 110 Consider alternative libraries. 条款24:了解 virtual functions、multiple inheritance、virtual base classes、 runtime type identification 的成本 113 Understand the costs of virtual functions, multiple inheritance, virtual base classes, and RTTI. 技术(Techniques, Idioms, Patterns) 123 条款25:将 constructor 和 non-member functions 虚化 123 Virtualizing constructors and non-member functions. 条款26:限制某个 class 所能产生的对象数量 130 Limiting the number of objects of a class. 条款27:要求(或禁止)对象产生于 heap 之中 145 Requiring or prohibiting heap-based objects. 条款28:Smart Pointers(智能指针) 159 条款29:Reference counting(引用计数) 183 条款30:Proxy classes(替身类、代理类) 213 条款31:让函数根据一个以上的对象类型来决定如何虚化 228 Making functions virtual with respect to more than one object. 杂项讨论(Miscellany) 252 条款32:在未来时态下发展程序 252 Program in the future tense. 条款33:将非尾端类(non-leaf classes)设计为 抽象类(abstract classes) 258 Make non-leaf classes abstract. 条款34:如何在同一个程序中结合 C++ 和 C 270 Understand how to combine C++ and C in the same program. 条款35:让自己习惯于标准 C++ 语言 277 Familiarize yourself with the language standard. 推荐读物 285 auto_ptr 实现代码 291 索引(一)(General Index) 295 索引(二)(Index of Example Classes,Functions,and Templtes) 313

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个