基本信息
- 原书名:Thinking in C++ Volume One:Introduction to Standard C++, &Volume 2: Practical Programming (2nd Edition)

编辑推荐
曾荣获美国《软件开发》杂志评选的1996年jolt生产力大奖,中文版自2000年推出以来,经久不衰,获得了读者的充分肯定和高度评价。
相关推荐:
<a href="http://product.china-pub.com/3800339" target="_blank"><img border="0" src="http://images.china-pub.com/ebook3800001-3805000/3800339/zcover.jpg" width="79" height="100"/>《C++ Primer英文版(第5版)》</a>
<a href="http://product.china-pub.com/196448" target="_blank"><img border="0" src="http://images.china-pub.com/ebook195001-200000/196448/zcover.jpg" width="79" height="100"/>《C++程序设计语言(特别版)》</a>
<a href="http://product.china-pub.com/28767" target="_blank"><img border="0" src="http://images.china-pub.com/ebook25001-30000/28767/zcover.jpg" width="79" height="100"/>《C++ Primer中文版(第4版)》</a>
<a href="http://product.china-pub.com/3660987" target="_blank"><img border="0" src="http://images.china-pub.com/ebook3660001-3665000/3660987/zcover.jpg" width="79" height="100"/>《C++黑客编程揭秘与防范》</a>
<a href="http://product.china-pub.com/3662132" target="_blank"><img border="0" src="http://images.china-pub.com/ebook3660001-3665000/3662132/zcover.jpg" width="79" height="100"/>《VC++深入详解(修订版)》</a>
<a href="http://product.china-pub.com/1052064" target="_blank"><img border="0" src="http://images.china-pub.com/ebook1050001-1055000/1052064/zcover.jpg" width="79" height="100"/>《C++ Primer Plus(第6版)》</a>
<a href="http://product.china-pub.com/3664994" target="_blank"><img border="0" src="http://images.china-pub.com/ebook3660001-3665000/3664994/zcover.jpg" width="79" height="100"/>《C++程序设计(第2版)》+《C++程序设计题解与上机指导(第2版)》套装</a>
内容简介
计算机书籍
《C++编程思想(两卷合订本)》曾荣获美国《软件开发》杂志评选的1996年Jolt生产力大奖,中文版自2000年推出以来,经久不衰,获得了读者的充分肯定和高度评价。
《C++编程思想(两卷合订本)》的第1卷是在第1版的基础上进行了更加深入的分析和修改后得到的第2版,其内容更加集中,可以供不同程度的读者选择阅读。本书第2卷介绍了C++实用的编程技术和最佳的实践方法,深入探究了异常处理方法和异常安全设计;介绍C++的字符串、输入输出流的现代用法;解释多重继承问题的难点,描述了典型的设计模式及其实现,特别介绍了多线程处理编程技术。
《C++编程思想(两卷合订本)》是C++领域内一本权威的著作,书中的内容、讲授方法、练习既适合课堂教学,又适合读者自学。本书适合作为高等院校计算机及相关专业的本科生、研究生的教材,也可供从事软件开发的研究人员和科技工作者参考。
作译者
Bruce Eckel 是MindView公司的总裁,向客户提供软件咨询和培训。他是C++标准委员会拥有表决权的成员之一,他也是《Java编程思想》(该书第3版影印版及翻译版已由机械工业出版社引进出版)。他曾经写过另5本面向对象编程书籍,发表过150篇以上的文章,是多本计算机杂志的专栏作家。他经常参加世界各地的研讨会并进行演讲。
Chuck Allison 曾是《C/C++ Users》杂志的资深编辑,著有《C/C++ Code
Capsules》一书。他是C++标准委员会的成员,犹他谷州立学院的计算机科学教授。他还是Fresh
Sources公司的总裁,该公司专门从事软件培训和教学任务。
目录
出版者的话
出版说明
第1卷 标准C++导引
译者序 3
前言 5
第1章 对象导言 11
1.1 抽象的过程 11
1.2 对象有一个接口 12
1.3 实现的隐藏 14
1.4 实现的重用 15
1.5 继承:重用接口 15
1.5.1 is-a 关系和is-like-a 关系 18
1.6 具有多态性的可互换对象 18
1.7 创建和销毁对象 21
1.8 异常处理:应对错误 22
1.9 分析和设计 22
1.9.1 第0阶段:制定计划 24
1.9.2 第1阶段:我们在做什么 24
1.9.3 第2阶段:我们将如何建立对象 26
前言
不能只把C++看做是语言要素的一个集合,因为有些要素单独使用是没有意义的。如果我们不只是用C++语言编写代码,而是用它思考“设计”问题,那么必须综合使用这些要素。而且,为了以这种方法理解C++,我们必须了解使用C的问题和一般的编程问题。本书讨论的是编程问题、为什么这些编程问题会成为要解决的问题以及用C++解决编程问题所采用的方法。因此,在每一章中所解释的一组语言要素,都建立在C++语言解决某一类特殊问题所用方法的基础之上。以这种方式,我希望一点一点地引导读者,从掌握C开始,直到读者使用C++变成自己的母语思维方式。
我将始终坚持一种观点:读者应当在头脑中建立一个模型,以便从各个方面深入理解这门语言的精髓。如果读者遇到难题,他可以将问题纳入这个模型,推导出答案。我将努力把已经印在我脑海中的见解传授给读者,正是这些见解,使得我能开始“用C++进行思考”。
第1卷第2版中的新内容
本书是第1版的彻底重写,反映了C++标准最终完成所带来的C++的所有改变,也反映了自从第1版写完后我又学习到的内容。我已经检查并重写了第1版中的全部文字,在这个过程中,我删去了一些过时的例子,修改了一些现有的例子,并增加了一些新的例子和新的练习。我对第1版的内容进行了大规模的重新整理和重新编排,以便反映新出现的更好的工具和我对人们如何学习C++的进一步理解。为方便没有C背景知识的读者能阅读本书后面的章节,在第2版增加了一章,简要地介绍C概念和基本的C++特征。
因而,对于“第2版与第1版相比有何不同”这个问题的简要回答是:不同之处不在于版本号是新的,而是进行了重写,有的地方读者甚至无法认出原来的例子和材料。
第2卷的内容是什么
C++标准增加了一些重要的新库,例如String、在标准C++库中的容器和算法,以及模板中的新的复杂性。这些新增的内容和其他更高级的主题被放进本书的第2卷,包括多重继承、异常处理、设计模式和建立和调试稳定系统等内容。
如何得到第2卷
就像当前你手上的这本书一样,《C++编程思想》第2卷完全可以从我的网站www.BruceEckel.com上下载。
预备知识
在本书第1版中,我假定读者已经学习了C,并至少具有自如阅读的水平。我的重点放在简化我认为比较困难的部分:C++语言。第2版增加了一章,快速地介绍C,并在光盘上提供“Thinking in C”的课堂讨论材料,但是即使如此,我仍然假设读者具有一定的程序设计经验。另外,正如读者可以通过读小说而直接地学会许多新词一样,读者也可以从在本书后面的文字中学习有关于C的大量知识。
学习C++
我希望本书的读者有和我进入C++时相同的情况:作为一个C程序员,对于编程持有实在而执着的态度。但糟糕的是,我的背景和经验是在硬件层的嵌入式编程方面。在那里,C常常被看做高层语言,它对于位操作是低效率的。后来我发现,自己甚至不是一个好的C程序员,平时总是掩盖了对malloc( )和free( )、setjmp( )和longjmp( )结构以及其他“复杂”概念的无知,当开始触及这些主题时就竭力回避,而不是努力去获取新的知识。
在我开始致力于学习C++时,当时惟一像样的书是Stroustrup夫子自道式的“专家指南”,因此我只好靠自己弄清基本概念。这引出了我的第一本关于C++的书,这本书基本上就是直接把我头脑中的经验倒出来而写成的。它的构思是作为读者的指南,引导程序员同时进入C和C++。这本书的两个版本 都收到了读者的热情反响。
几乎就在《Using C++》出版的同时,我开始讲授这门语言。讲授C++已经变成了我的职业。自1989年以来,在授课时我看到了世界各地听众昏昏欲睡的样子、茫然不知的面容和困惑不解的表情。当我对一些人数不多的人群进行内部培训时,在练习过程中又发现了某些问题。即便那些面带微笑和会心点头的学生,实际上对许多问题也还是糊涂的。通过开创和多年主持“软件开发会议”的C++和Java系列专题,我发现,我和其他讲演者都有一种倾向,即过快地向听众灌输了过多的主题。后来,我做了一些努力,通过区别对待不同层次的听众和提供相关资料的方法,尽量吸引听众。也许这是过分的要求,但是因为我是一个抵触传统教学的人(对于大部分人而言,我相信这种抵触源于厌倦),所以希望我通过努力,使每一个人都能跟得上教学进度。
有一段时间,我编写了大量的教学演示。这样,我结束了通过实验和重复方式进行学习(在设计C++程序的过程中,这也是一项很有用的技术)的阶段。最后,从我多年的教学经验中总结出来的所有内容,形成了一门课程。在课程中,我用一系列分离的、易于理解的步骤并采用实地课堂讨论的形式解决学习中的问题(理想的学习情况),并在每次课后面跟随着练习。
本书的第1版是作为两学年制课程编写的,并且书中的内容已经在许多不同的课堂讨论上通过了多种形式的检验。我从每次课堂讨论上收集反馈意见,不断地修改和调整内容,直到我感觉到它已经成为一本很好的教材为止。但这本书不仅仅是课堂讨论的分发教材,而且我在其中放入了尽可能多的信息,在结构上使得它能引导读者顺利地通过当前主题和进入下一个主题。另外,这本书也适合于自学读者,能帮助他们尽快地掌握这门新的编程语言。
目标
在这本书中,我的目标是: