本书作者是C++语言的设计者和最初实现者,本书的写作目的是让有经验的程序员快速了解C++现代语言。书中几乎介绍了C++语言的全部核心功能和重要的标准库组件,以很短的篇幅将C++语言的主要特性呈现在读者面前,并给出一些关键示例,让读者在很短的时间内就能对现代C++的概貌有一个清晰的了解,尤其是关于面向对象编程和泛型编程的知识。本书没有涉及太多C++语言的细节,非常适合想熟悉C++语言最新特性的C/C++程序设计人员,以及精通其他高级语言而想了解C++语言特性和优点的人员。
不仅介绍了C++的特性,而且还介绍了C++的编辑风格。
内容非常全面,其覆盖面从基础知识到更高级的主题范围。
讨论了C++的设计和发展,并扩展到C++11。
前言
教而至简,不亦乐乎。
——西塞罗
现在的C++仿佛进化成了一种新的语言。与C++98相比,C++11更易于我们清晰、简洁、直观地表达思想。而且编译器可以将程序中的错误更好地检查出来,程序的运行速度也越来越快。
与其他任何一种现代编程语言相同,C++的规模非常庞大,且提供的库也异常丰富,这些都值得程序员认真学习以便高效地利用。本书的目的是让有经验的程序员快速地了解现代C++语言,因此,本书几乎介绍了C++的全部核心功能和重要的标准库组件。读者只需花费几个小时就能读完本书,但是想必所有人都清楚,要想写出漂亮的C++程序绝非一日之功。本书的目的并非让读者熟练掌握一切,而只是介绍语言的概貌,给出一些经典的例子,然后帮助读者开始自己的C++之旅。如果读者希望深入了解C++语言,请阅读我的另一本著作The C++ Programming Language,Fourth Edition(简称TC++PL4)。实际上,本书正是TC++PL4第2章~第5章的扩充版,只是出于完整性和独立性的考虑,我们稍微增加了一些内容。本书的篇章结构与TC++PL4保持一致,读者如果对细节感兴趣,可以在TC++PL4中进一步寻找答案。同样,在我的个人主页(www.stroustrup.com)上有一些为TC++PL4编写的习题,也可以用于本书。
我们假设读者已经拥有了一些编程经验。如果没有,建议你先找一本入门教材学习一下,比如Programming: Principles and Practice Using C++ [Stroustrup, 2009]。即使你曾经编写过程序,你所使用的语言或者编写的应用在风格或形式上也可能与本书相距甚远。
我们用城市观光的例子来比喻本书的作用,比方说参观哥本哈根或者纽约。在短短几个小时之内,你可能会匆匆游览几个主要的景点,听到一些有趣的传说或故事,然后被告知接下来应该参观哪里。但是仅靠这样一段旅程,你无法真正了解这座城市,对听到和看到的东西也是一知半解,更别提熟悉这座城市的生存法则。毕竟要想认识并融入一座城市,需要在这里生活很多年。不过幸运的是,此时你已经对城市的总体情况有了一些了解,知道了它的某些特殊之处,并且对有些方面产生了兴趣。接下来,你就有机会开始真正的探索之旅了。
本书介绍C++语言的主要功能,尤其是关于面向对象编程和泛型编程的知识。在写作时,我们没有涉及太多细节,更不想把本书写成参考手册。对于标准库也尽量去繁就简,用生动的例子进行讲解。本书没有介绍ISO标准之外的库,读者需要的话可以自行查阅相关资料。如果我们提到了某个标准库函数或类,那么读者很容易就能在头文件中找到它的定义,还可以在互联网上搜集到更多与之有关的信息。
本书力求把C++作为一个整体呈现在读者面前,而非逐层地介绍。因此,在这里我们不细分到某项语言特性是归属于C、C++98还是C++11,这些与语言沿革有关的信息在第14章可以找到。
致谢
本书的大多数内容源自TC++PL4 [Stroustrup, 2012],因此,首先感谢协助我完成TC++PL4的所有同仁。还要感谢Addison-Wesley的编辑Peter Gordon,是他建议作者把TC++PL4的部分章节扩展成本书的。
Bjarne Stroustrup