提升C++编程效率与规范:More Effective C++精华提炼

需积分: 0 9 下载量 158 浏览量 更新于2024-08-01 收藏 1.48MB PDF 举报
《More Effective C++》是一本由Scott Meyers编著的深入解析C++编程实践的权威书籍,对于想要精通C++的程序员来说是不可或缺的参考资料。这本书分为多个部分,由侯捷、ZHC、WQ等多位专家翻译和解读。 第一部分是译序和导读,侯捷介绍了作者的背景及书籍的主要内容,强调了学习C++的三个经典教材:《C++ Primer》、《Effective C++》以及《More Effective C++》,表明这三本书对于掌握C++编程至关重要。 第二部分至第二十八项(Item1~28)主要探讨基础议题,如指针与引用的区别(ITEMM1),提倡使用C++风格的类型转换(ITEMM2),强调避免对数组进行多态操作(ITEMM3),以及避免不必要的默认构造函数(ITEMM4)。这些章节着重于提升代码的清晰度和效率。 接下来,章节转向运算符的使用,例如谨慎定义类型转换函数(ITEMM5)、前后缀自增自减操作符的区别(ITEMM6)、重载运算符的注意事项(如避免重载"&&", "||", 或 ",")(ITEMM7),以及NEW和DELETE操作符的不同含义理解(ITEMM8)。 第五部分围绕异常处理,讨论了析构函数在防止资源泄漏中的作用(ITEMM9)、构造函数中资源管理(ITEMM10)、异常信息传递的控制(ITEMM11)、异常捕获与虚函数调用的区别(ITEMM12)、引用捕获异常(ITEMM13)以及异常规格的使用(ITEMM14)。这部分内容强调了异常处理的最佳实践,以确保程序的健壮性。 第六部分关注效率,提出了80-20原则(ITEMM16)、懒惰计算(LAZYEVALUATION)(ITEMM17)、分期计算优化(ITEMM18)、临时对象管理(ITEMM19)、返回值优化(ITEMM20)、重载避免隐式转换(ITEMM21)、运算符赋值形式的运用(ITEMM22)以及程序库选择的重要性(ITEMM23)。同时,还讨论了虚函数、多继承、虚基类和运行时类型识别(RTTI)的性能成本(ITEMM24)。 第七部分被称为技巧或idioms,探讨了一些特定的编程模式和最佳实践,这些技巧旨在帮助读者写出更高效、更优雅的C++代码。 《More Effective C++》是一本深度剖析C++编程技巧和最佳实践的实用指南,适合所有希望提升C++编程能力的开发者阅读,无论是初学者还是经验丰富的程序员都能从中受益良多。
2008-11-03 上传
作者 : Scott Meyers 译序、导读 : 侯捷 译序(侯捷) C++ 是一个难学易用的语言! C++ 的难学,不仅在其广博的语法,以及语法背後的语意,以及语意背後的深层思维,以及深层思维背後的物件模型;C++ 的难学,还在於它提供了四种不同(但相辅相成)的程式设计思维模式: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 的层级! 这些都是经验的累积和心血的结晶。