标题：Cplusplus编程思想
《Cplusplus编程思想》简介
《Cplusplus编程思想》[1]本书第1版荣获美国“软件开发”杂志评选的1996  年图书震撼大奖（JoltAward），中文版自2000年推出以来，经久不衰，获得了读者的充分肯定和高度评价。第2版与第1版相比，在章节安排上有以下改变。增加了两章：“对象的创建与使用”和“C++中的C”。前者与“对象导言”实际上是第1版“对象的演化”一章的彻底重写，增加了近几年面向对象方法和编程方法的最新研究与实践的丰硕成果；后者的添加使不熟悉C的读者可以直接使用本书。删去了四章：“输入输出流介绍”、“多重继承”、“异常处理”和“运行时类型识别”，删去的内容均为C++中较复杂的主题，作者将它们连同C++标准完成后增加的一些内容放到本书的第2卷中，使本书的第1卷内容显得更加集中，可以供不同程度的读者选择阅读。需要强调的是，第2版的改变不仅体现在这些章节的调整上，更多的改变体现在每一章的字里行间，包括例子的调整和练习的补充。与众不同的精心选材和认真推敲的叙述使得第2版更趋成熟。
本书是C++领域内一本权威的著作，书中的内容、讲授方法、例子和练习既适合课堂教学，又适合读者自学。无论是高等院校计算机及相关专业的学生，还是业界的从业人员，以及广大的计算机爱好者，都可从阅读本书中获益。
作者简介
BruceEckel从1986年至今，已经发表了超过150篇计算机技术文章，出版了6本书  （其中4本是关于C++的），并且在全世界做了数百次演讲。他是《ThinkinginJava》、《ThinkinginC++》、《C++InsideOut》,《UsingC++》和《ThinkinginPatterns》的作者，同时还是《BlackBeltC++》文集的编辑。他的《ThinkinginC++》一本书在1995年被评为“最佳软件开发图书”，《ThinkinginJava》被评为1999年JavaWorld“最爱读者欢迎图书”，并且赢得了编辑首选图书奖。
目录
译者序
前言
第1章对象导言
第2章对象的创建与使用
第3章C++中的C
第4章数据抽象
第5章隐藏实现
第6章初始化与清除
第7章函数重载与默认参数
第8章常量
第9章内联函数
第10章名字控制
第11章引用和拷贝构造函数
第12章运算符重载
第13章动态对象创建
第14章继承和组合
第15章多态性和虚函数
第16章模板介绍
附录A编码风格
附录B编程准则
附录C推荐读物
索引
书评
在市场上流行的各种计算机语言中，C++的历史相对较长却经久不衰，威力强大却十分难学，"真正的程序员用C++"。这些是得到大家公认的。原因是C++语言经过了多年的发展，体系已经比较庞大、完备，语法表现十分灵活，特别是STL被接纳为C++标准之后。而语言中的各种要素在各个不同的场合交互作用，许多结果就是发明人自己也未必都能料想的到。
如果你正在攻克这个艰巨的"堡垒"，有一本好的C++教材能让你的学习旅程轻松许多。
《ThinkinginC++》（中文版名《C++编程思想》）是美国著名技术作家BruceEckel的杰出作品。此公在美国做了多年的C++语言培训讲师。与之齐名的还有他的另一部著作：《ThinkinginJava》（中文版名《Java编程思想》）。BruceEckel写作的特点可谓是精益求精：他把整部书稿的电子版全部放在自己的个人站点上，让全世界的读者浏览、阅读、评判，这样每一部付梓的作品都经过了许多次修订。
《ThinkinginC++》的第一版中译本早已经由机械工业出版社引入到了国内计算机界，获得一片好评，被誉为"神奇的C++书籍"。但此书的第二版和第一版相比变化很大，是自1998年C++标准获得通过后，完全重新书写的版本，自然里面也有作者从写作第一版以来的不少经验积累。并且，书由原来的一卷分成了两卷，第一卷IntroductionToStandardC++和第二卷StandardLibrariesAdvancedTopics。这也反映了C++语言的重要进步。所以作者单独写了一卷关于C++标准模板库（STL）的内容。在第一卷中，作者全部应用STL书写示例代码，作为内容上的统一和对应。
有幸的是，作为国内计算机图书出版界的重要力量--机械工业出版社引进了这本书的英文版。确切的说是第一卷，因为据称第二卷在美国还未出版。本书得到了很多读者的称赞是和它的准确定位分不开的。
国内外关于C++语言门类的书籍、著述非常之多，可谓汗牛充栋。有的详尽全面，可以作为语言手册，如StanleyB.Lippman的《C++Primer》。有的则深不可测，成为专家级的"大餐"，如C++发明人BjarneStroustrup博士的《C++程序设计语言》。
而ThinkinginC++则显得有些另类，BruceEckel没有把C++的方方面面都告诉读者，因为多年的培训经验告诉他，就应用级别的开发者来说，学习的"太多、太快"反而是个麻烦，学习者难于抓住重点。比如，如果你不是搞编译器的话，那就没必要"背下"那些运算符操作顺序（我就做过这样的傻瓜），使用时加上括号就足够了，维护起来也很方便。
所以这本书其实是本着这样一种理念：充分利用C++语言提供的工具、元素，从C++的角度进行思考，在程序设计中有效的使用C++，而避开C++语言的陷阱、阴暗面。可以说，此书不是一部语言手册，但却是一部汇集了许多C++使用经验的参考资料，值得你反复的阅读、体会、咀嚼。
作者根据长期的C++培训实践，把他的这一思想主旨划分成了十几个作为开发者应该掌握的重点部分，也就是第一卷的十几个章节。为了让读者易于领会，书中的示例程序也尽可能的简洁。你在阅读每一章时，就会感觉：章节中涉及的内容要点非常集中，把主题牵扯的技术细节交代的相当透彻，就好像自己不断的在打一场学习C++语言的"战役"，解决了一个又一个的"知识?"。而作为程序员，这种来龙去脉式的对知识的了解很重要也很有效，它避免了你在设计、编写代码时孤立的看待事物，从而能领会语言的精髓，灵活的学以致用。正所谓："知其然，更知其所以然"，才能无往而不利。
比较有意思的是书的开头，作者在第一章后面居然讲了近20页篇幅的软件分析和设计，其实主要内容就是"极限编程"。个人感觉BruceEckel对传统的软件工程在中小软件项目中的实际作用有反思和警醒：它们不都总是合适的。比如，好些方法常常在计划阶段停留过长，计划的东西却没多大指导意义。因为很多东西实际上无法光凭推测和想象就能确定全部细节，还有的时候不到编码阶段你就无法知道面临的困难。作者在后面大力推荐极限编程，认为这是一种行之有效的软件工程手段，并指出了它最主要的两个特点。有兴趣的朋友可以找相应的书籍参阅。
任何技术性的书籍，都必定有它特定的读者群。为了让读者能顺利阅读以及尽快领会，作者一般都会在书的序言部分注明读者范围和必须具备的基础知识。本书自然不例外，作者要求读者最好已经有了一些实际的编程体验，特别是最好懂得C语言。作者在此书中还特地加入了"C语言快速入门"这一章(第三章)。我发现，如果读者不懂C语言，还真的不太容易领会书中的内容。
因为作者在讲述C++语言的内容时，经常把此部分在C语言中的内涵和在C++中的语义进行对比，或者干脆从C讲起，逐步演进到C++。比如，从第四章到第五章，你会很清楚的发现class关键字的由来－人们为了进一步减少模块间的耦合，把从C语言中的struct加以扩展，加入存取控制和方法，从而演进到class。而在C++中，为什么头文件的重要性变得更加突出，作者也通过对C语言在这方面的不足来加以阐述。
很多使用C++的朋友都知道，ScottMeyers的《EffectiveC++》同样是一本优秀的书籍，里面50个C++编程条款是专家智慧、经验的结晶。有人还打了一个比方：C++程序员应该分成两类--读过《EffectiveC++》的，和没有读过《EffectiveC++》的。
而如果你看了《ThinkinginC++》，你就会发现，《EffectiveC++》中的大部分内容都能在书中找到，而且论述更加连贯，内容更加充实。当然，不知道是"英雄所见略同"，还是作者进行了下意识的补充。
例如：尽量使用const关键字做参数和尽量代替#define宏这一主题，BruceEckel干脆用了整个第八章来专门论述相关的知识。同样，还有如何明智的使用inline，在第九章内有详尽的说明。第十章则是如何利用namespace来防范命名冲突这一软件开发中的常见问题。说实话，国内几乎没有C++教材讨论过这一主题，它们所做的事情更多的是讲解C++对C的扩展。大概这就是我们的差距吧。
本书的另外一个亮点就是：诀窍很多。编程中不少常见的麻烦事如何解决，在书中都能找到合理的解答。
在一个较大的工程中，往往有许多文件包含引用其它文件，这通常引起的麻烦就是：你修改了一个文件，却引起了一堆模块的重新编译。时间上的代价太高，而且不利于模块间"划清界限"，相互牵扯太多。书中提到了一个很简单却行之有效的办法－把头文件中的结构定义、对其它类的引用进行剥离，转移到对应的.cpp实现文件中，头文件中代之以指针声明。
还有如何有效的控制多个类模块中静态变量的初始化，作者也提出了两个解决方案。如果说指针是C语言的精粹的话，那么虚拟函数就可以看作C++的灵魂。C++正是借助于虚拟函数的妙用，来实现许多强大的功能，这使得人们在软件设计中对现实世界的描述更加准确，表现更为灵活。不要忘了，大行其道的COM组件编程，和C++中的这些实现其实密不可分。DonBox说得好：COM是更好的C++。
BruceEckel在该书的后面章节，自然不惜笔墨着重论述这些内容。他以模板入门这一章作为本书的结束，估计和他的第二卷专门论述STL－标准模板库有关。
通读全书，心情可以用两个字来表达：舒畅。程序设计中碰见的许多问题，在大脑中都可以找到"取经"的地点，能不爽吗？当然，这还远远不是C++语言的全部，要真正领悟C++还需要进一步的努力和实践。所以，作者在书的附录指出了进一步阅读的推荐书目。
值得一提的是，本书的英文版语言非常流畅、长而复杂且难于理解的语句不多。我在阅读中经常有欲罢不能的感觉，常常拿起来就放不下了，直到脑海被C++的符号所充斥，再也吸收不进新的东西才肯罢手。大概这是此书的另外一个魅力所在吧。而且，抱着此书，边看边做批注和心得，这和在屏幕上阅读电子版的体验又有很大不同。当然，对于英文能力不足的朋友来说，阅读英文版并准确的理解的确是个负担。期望本书的中文版能翻译准确且保持流畅的风格