译序
C++是一门难学易用的语言!
C++的难学,不仅在其广博的语法、语法背后的语义、语义背后的深层思维、深层思维背后的对象模型;C++的难学,还在于它提供了 4种不同(相辅相成)的
编程思维模型:procedural-based,object-based,object-oriented,generic paradigm。
世上没有白吃的午餐。又要有效率,又要有弹性,又要前瞻望远,又要回溯相容,又要能治大国,又要能烹小鲜,学习起来当然就不可能太简单。
在如此庞大复杂的机制下,万千使用者前赴后继的动力是:一旦学成,妙用无穷。
C++相关书籍之多,车载斗量,如天上繁星,如过江之鲫。广博如四库全书者有之(The C++Programming Language、C++Primer),深奥如重山复水者有之(TheAnnotated 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++StandardLibrary),另辟蹊径者有之(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
本书不但与英文版页页对译,保留索引,并加上译注、交叉索引1、读者服务2。
这套书将对于您的程序设计生涯带来重大帮助。翻译这套书籍的过程中,我感觉来自技术体会上的极大快乐。我祈盼(并相信)您在阅读此书时拥有同样的心情。
侯捷 2003/03/07 于台湾新竹
jjhou@jjhou.com
http://www.jjhou.com
本书保留大量简短易读之英文术语,时而中英并陈。以下用语请读者特别注意:
译注:借此版面提醒读者,本书之中如果出现“条款 5”这样的参考指示,指的是本书条款 5;如果出现“条款 E5”这样的参考指示,E 是指 EffectiveC++2/e)
[1] Effective C++ 2/e 和 More Effective C++ 之中译本,实际上是以 Scott Meyers 的另一个产品 Effective C++CD为本,不仅数据更新,同时亦将 CD 版中的两书交叉参考保留下来,可为读者带来旁征博引时的莫大帮助。
[2] 欢迎读者对本书所及主题提出讨论,并感谢读者对本书任何失误提出指正。来信请寄jjhou@jjhou.com。勘误网站:http://www.jjhou.com(繁),http://jjhou.csdn.net(简)