基本信息
- 原书名:The C++ Programming Language,Fourth Edition

编辑推荐
内容简介
计算机书籍
《C++程序设计语言》(原书第4版)是C++领域最经典的参考书,介绍了C++11的各项新特性和新功能。全书共分四部分。第一部分(第1~5章)是引言,包括C++的背景知识,C++语言及其标准库的简要介绍;第二部分(第6~15章)介绍C++的内置类型和基本特性,以及如何用它们构造程序;第三部分(第16~29章)介绍C++的抽象机制及如何用这些机制编写面向对象程序和泛型程序;第四部分(第30~44章)概述标准库并讨论一些兼容性问题。
由于篇幅问题,原书中文版分两册出版,分别对应原书的第一至三部分和第四部分,这一册为第一至三部分。
本书适合计算机及相关专业本科生用作C++课程的教材,也适合C++程序设计新手和开发人员
阅读。
作译者
本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup),C 语言的设计者和最初实现者,C 语言ISO标准化工作的积极参与者,同时也是《C 程序设计语言》和《C 程序设计原理与实践》的作者。他是英国剑桥大学计算机科学专业博士,1 979年加入美国新泽西贝尔实验室,从成立到2002年一直担任贝尔实验室大规模程序设计研究部门的负责人。2002年至2014年,Bjarne被评为德州农工大学工程学院计算机科学首席教授,哥伦比亚大学计算机科学系客座教授,德州农工大学计算机科学系杰出研究教授。多年来,他为剑桥大学、哥伦比亚大学和普林斯顿大学等知名学府的计算机科学教学事业倾注了大量的热情和精力。商业领域方面,Bjarne是RollApp科技公司的资深顾问。2014年,Bjame加入摩根士丹利纽约总部,任职技术与数据部门的董事总经理。他是美国国家工程院院士、IEEE会士和ACM会士,研究兴趣包括分布式系统、设计、程序设计技术、软件开发工具和程序设计语言。
目录
出版者的话
译者序
前言
第3版前言
第2版前言
第1版前言
第一部分 引言
第1章 致读者 2
1.1 本书结构 2
1.1.1 引言 2
1.1.2 基本特性 3
1.1.3 抽象机制 4
1.1.4 标准库 5
1.1.5 例子和参考文献 5
1.2 C++的设计 7
1.2.1 程序设计风格 8
1.2.2 类型检查 11
1.2.3 C兼容性 12
1.2.4 语言、库和系统 12
译者序
历时近两年,终于翻译完了《C++程序设计语言》(原书第4版)。全书包含44章,英文原版共有1300多页,是C++语言之父Bjarne Stroustrup的一部呕心沥血之作。
这部巨著有几个特点:
一是知识结构完整,对C++语言的介绍非常全面。作者按照“基本功能”→“抽象机制”→“标准库”的递进层次组织全书,由浅入深地把C++语言的方方面面呈现在读者的面前。各种水平、各种背景的读者都能在书中找到适合自己的切入点和学习路径。
二是对细节的讲解非常深入,有利于读者了解和掌握语言的精华。作为C++语言的发明者和主要维护者,Bjarne Stroustrup在撰写本书时绝不仅仅满足于阐明语法和知识点本身。他试图向读者揭示各个语言功能的设计初衷,以及他对各种制约因素是如何考虑并妥协的。对于大多数读者来说,这种视角新奇而有趣。他们不再只是被动的学习者,在知道了“是什么”和“为什么”之后,还可以大胆地揣测“C++语言接下来该如何继续发展”。不得不说,这是本书与其他C++书籍的最大区别。
三是作者在写作中融入了很多自己的工程实践经验。学习程序设计语言与学习文化课有很大的不同。设计程序的过程是一门艺术,程序语言只是完成艺术作品所需的工具。举个例子来说,由于各种各样的原因,在C++中存在一些语言特性,它们的功能和作用非常类似。那么这些特性之间是何关系?在遇到某类实际问题时应该如何聪明地选择?本书很好地回答了此类问题。
以译者的浅见,程序员应该是艺术家(Artist),而非匠人(Worker)——后者只会堆砌代码,而前者能创造出美好的作品。这也应该是Bjarne Stroustrup写作本书时所追求的吧!
这本译著的出版凝结了很多人的智慧和心血,绝非译者二人独力可为。感谢机械工业出版社的朱劼、关敏等编辑在本书译校和出版过程中的辛勤付出,她们给予了我们很多无私的帮助。由于译者水平有限,书中难免有一些不当之处,恳请读者不吝批评指正。
译者
2016年春于南开园
前言
所有计算机科学问题,
都可以通过引入一个新的间接层次来解决,
那些已有过多间接层次的问题除外。
——David J. Wheeler
与C++98标准相比,C++11标准让我可以更清晰、更简洁而且更直接地表达自己的想法。而且,新版本的编译器可以对程序进行更好的检查并生成更快的目标程序。因此,C++11给人的感觉就像是一种新语言一样。
在本书中,我追求完整性(completeness)。我会介绍专业程序员可能需要的每个语言特性和标准库组件。对每个特性或组件,我将给出:
基本原理:设计这个特性(组件)是为了帮助解决哪类问题?其设计原理是什么?它有什么根本的局限?
规范:它该如何定义?我将以专业程序员为目标读者来选择内容的详略程度,对于要求更高的C++语言研究者,有很多ISO标准的文献可供查阅。
例子:当单独使用这个特性或与其他特性组合使用时,如何用好它?其中的关键技术和习惯用法是怎样的?在程序的可维护性和性能方面是否有一些隐含的问题?
多年来,无论是C++语言本身还是它的使用,都已经发生了巨大改变。从程序员的角度,大多数改变都属于语言的改进。与之前的版本相比,当前的ISO C++标准(ISO/IEC 14882-2011,通常称为C++11)在编写高质量代码方面无疑是一个好得多的工具。但是它好在哪里?现代C++语言支持什么样的程序设计风格和技术?这些技术靠哪些语言特性和标准库特性来支撑?精练、正确、可维护性好、性能高的C++代码的基本构建单元是怎样的?本书将回答这些关键问题。很多答案已经不同于1985、1995或2005等旧版本的C++语言了:C++在进步。
C++是一种通用程序设计语言,它强调富类型、轻量级抽象的设计和使用。C++特别适合开发资源受限的应用,例如可在软件基础设施中发现的那些应用。那些花费时间学习高质量代码编写技术的程序员将会从C++语言受益良多。C++是为那些严肃对待编程的人而设计的。人类文明已经严重依赖软件,编写高质量的软件非常重要。
目前已经部署的C++代码达到数十亿行,因此程序稳定性备受重视——很多1985年和1995年编写的C++代码仍然运行良好,而且还会继续运行几十年。但是,对所有这些应用程序,都可以用现代C++语言写出更好的版本;如果你墨守成规,将来写出的代码将会是低质量、低性能的。对稳定性的强调还意味着,你现在遵循标准写出的代码,在未来几十年中会运行良好。本书中所有代码都遵循2011 ISO C++标准。
本书面向三类读者:
想知道最新的ISO C++标准都提供了哪些新特性的C++程序员。
好奇C++到底提供了哪些超越C语言的特性的C程序员。
具备Java、C#、Python和Ruby等编程语言背景,正在探寻“更接近机器”的语言,即更灵活、提供更好的编译时检查或是更好性能的语言的程序员。
自然,这三类读者可能是有交集的——一个专业软件开发者通常掌握多门编程语言。
本书假定目标读者是程序员。如果你想问“什么是for循环?”或是“什么是编译器?”,那么本书现在还不适合你,我向你推荐我的另一本书《C++程序设计原理与实践》,这本书适合作为程序设计和C++语言的入门书籍。而且,我假定读者是较为成熟的软件开发者。如果你的问题是“为什么要费力进行测试?”或者认为“所有语言基本都是一样的,给我看语法就可以了”,甚至确信存在一种适合所有任务的完美语言,那么本书也不适合你。
相对于C++98,C++11提出了哪些改进和新特性呢?适合现代计算机的机器模型会涉及大量并发处理。为此,C++11提供了用于系统级并行编程(如使用多核)的语言和标准库特性。C++11还提供了正则表达式处理、资源管理指针、随机数、改进的容器(包括哈希表)以及其他很多特性。此外,C++11还提供了通用和一致的初始化机制、更简单的for语句、移动语义、基础的Unicode支持、lambda表达式、通用常量表达式、控制类缺省定义的能力、可变参数模板、用户定义的字面值常量和其他很多新特性。请记住,这些标准库和语言特性的目标就是支撑那些用来开发高质量软件的程序设计技术。这些特性应该组合使用——将它们看作盖大楼的砖,而不应该相互隔离地单独使用来解决特定问题。计算机是一种通用机器,而C++在其中起着重要作用。特别是,C++的设计目标就是足够灵活和通用,以便处理那些连它的设计者都未曾想象过的未来难题。
媒体评论
第1版1985年,第2版1991年,第3版1997年,特别版2000年,第4版2013年,经典无限延伸……
本书是在C++语言和程序设计领域具有深远影响、畅销不衰的经典著作,由C++语言的设计者和最初的实现者Bjarne Stroustrup编写,对C++语言进行了最全面、最权威的论述,覆盖标准C++以及由C++所支持的关键编程技术和设计技术。本书英文原版一经面世,即引起业内人士的高度评价和热烈欢迎,先后被翻译成德、希、匈、西、荷、法、日、俄、中、韩等近20种语言,数以百万计的程序员从中获益,是无可取代的C++经典力作。
新的C++11标准使得程序员能以更清晰、更简明、更直接的方式表达思想,从而编写出更快速和高效的代码。在最新出版的第4版中,Stroustrup博士针对最新的C++11标准,为所有希望更有效使用C++语言编程的程序员重新组织、扩展和全面重写了这本C++语言的权威参考书和学习指南,细致、全面、综合地阐述了C++语言及其基本特性、抽象机制、标准库和关键设计技术。
新的C++11标准的内容包括:
支持并发处理。
正则表达式、资源管理指针、随机数、改进的容器(包括哈希表)以及其他很多特性。
通用和一致的初始化机制、更简单的for语句、移动语义、基础的Unicode支持。
lambda表达式、通用常量表达式、控制类缺省定义的能力、可变参数模板、模板别名、用户定义的字面值常量。
兼容性问题。
本贾尼•斯特劳斯特卢普(Bjarne Stroustrup) C++语言的设计者和最初实现者,C++语言ISO标准化工作的积极参与者,同时也是《C++程序设计语言》和《C++程序设计原理与实践》的作者。他是英国剑桥大学计算机科学专业博士,1979年加入美国新泽西贝尔实验室,从成立到2002年一直担任贝尔实验室大规模程序设计研究部门的负责人。2002~2014年,Bjarne 被评为德州农工大学工程学院计算机科学首席教授,哥伦比亚大学计算机科学系客座教授,德州农工大学计算机科学系杰出研究教授。多年来,他为剑桥大学、哥伦比亚大学和普林斯顿大学等知名学府的计算机科学教学事业倾注了大量的热情和精力。商业领域方面,Bjarne 是RollApp 科技公司的资深顾问。2014年,Bjarne加入摩根士丹利纽约总部,任职技术与数据部门的董事总经理。他是美国国家工程院院士、IEEE会士和ACM会士,研究兴趣包括分布式系统、设计、程序设计技术、软件开发工具和程序设计语言。