本书是C++的设计者关于C++语言的最主要著作之一。作者综合性地论述了C++的历史和发展,C++中各种重要机制的本质意义和设计背景,这些机制的基本用途和使用方法,讨论了C++所适合的应用领域及其未来的发展前景。本书在帮助人们理解C++语言方面的作用是不可替代的。它值得每个学习、使用和关注C++语言的专业工作者、科研人员、教师和学生阅读。
出版者的话\r\n专家指导委员会\r\n译者序\r\n前言\r\n致读者\r\n引言\r\n怎样读这本书\r\nC++时间表\r\n关注使用和用户们\r\n程序设计语言\r\n第一部分\r\n 第1章 C++的史前时代\r\n 第2章 带类的C\r\n 第3章 C++的诞生\r\n 第4章 C++语言设计规则\r\n 第5章 1985——1993年表\r\n 第6章 标准化\r\n 第7章 关注和使用\r\n 第8章 库\r\n 第9章 展望\r\n第二部分\r\n 第10章 存储管理\r\n 第11章 重载\r\n 第12章 多重继承\r\n 第13章 类概论的精炼\r\n 第14章 强制\r\n 第15章 模板\r\n 第16章 异常处理\r\n 第17章 名字空间\r\n 第18章 C语言预处理器\r\n参考文献\r\n索引
ACM关于程序设计语言历史的HOLP-2会议要我写一篇C++历史的文章。这看起来是一个很合理的想法,还带着点荣誉性质,于是我就开始写了。为了对C++的成长有一个更全面更公平的观点,我向一些朋友咨询了他们对C++那些早期日子的记忆。这就使关于这项工作的小道消息不胫而走。有关的故事逐渐变了味,有一天,我忽然接到一个朋友的来函,问我在哪里可以买到我关于C++设计的新书。这个电子邮件就是本书的真正起源。
在传统上,关于程序设计和程序设计语言的书都是在解释某种语言究竟是什么,还有就是如何去使用它。但无论如何,有许多人也很想知道某个语言为什么会有它现在这个样子,以及它是怎样成为这个样子的。本书就是针对C++语言,想给出对后面这两个问题的解释。在这里要解释C++怎样从它的初始设计演化到今天的这个语言,要描述造就了C++的各种关键性的问题、设计目标、语言思想和各种约束条件,以及这些东西又是如何随着时间的推移而变化的。
自然,C++语言和造就它的设计思想、编程思想本身并不会演化,真正演化的是C++用户们对于实际问题的理解,以及他们对于为了帮助解决这些问题而需要的工具的理解。因此,在本书中也将追溯人们用C++去处理的各种关键性问题,以及实际处理那些问题的人们的认识,这些都对C++产生了重要影响。
C++仍然是一个年轻的语言,许多用户对这里将要讨论的一些问题还不知晓。这里所描述的各种决策的进一步理论,可能还需要一些年才能变得更清晰起来。本书要展示的是我个人关于C++如何出现、它是什么以及它应该是什么的观点。我希望这些东西能够帮助人们理解怎样才能最好地使用C++,理解C++的正在继续进行的演化进程。
书中特别要强调的是整体的设计目标、实际的约束以及造就出C++的那些人们。有关各种语言特征的关键性设计决策的讨论被放到了相应的历史环境里。在这里追溯了C++的演化过程,从带类的C开始,经过Release 1.0和2.0,直到当前的ANSI/ISO的标准化工作,讨论了使用、关注、商业行为、编译系统、工具、环境和库的爆炸性增长,还讨论了C++与C和Simula关系的许多细节。对于C++与其他语言的关系只做了简短讨论。对主要语言功能的设计,例如类、继承、抽象类、重载、存储管理、模板、异常处理、运行时类型信息和名字空间等,都在一定细节程序上进行了讨论。
本书的根本目的,就是想帮助C++程序员更好地认识他们的语言、该语言的背景和基本概念;希望能激励他们去试验那些对他们来说还是新的C++使用方式。本书也可供有经验的程序员和程序设计语言的学生阅读,可能帮助他们确定使用C++是不是一件值得做的事情。