引言

当实际地形与地图不符时,相信实际地形。

——瑞士军队谚语

讲授和学习本书的方法

我们是如何帮助你学习的?又是如何安排学习进程的?我们的做法是,尽力为你提供编写高效的实用程序所需的最基本的概念、技术和工具,包括程序组织、调试和测试、类设计、计算、函数和算法设计、绘图方法(仅介绍二维图形)、图形用户界面(GUI)、文本处理、正则表达式匹配、文件和流输入输出(I/O)、内存管理、科学/数值/工程计算、设计和编程思想、C++标准库、软件开发策略、C语言程序设计技术。认真完成这些内容的学习,我们会学到如下程序设计技术:过程式程序设计(C语言程序设计风格)、数据抽象、面向对象程序设计和泛型程序设计。本书的主题是程序设计,也就是表达代码意图所需的思想、技术和工具。C++语言是我们的主要工具,因此我们比较详细地描述了很多C++语言的特性。但请记住,C++只是一种工具,而不是本书的主题。本书是“用C++语言进行程序设计”,而不是“C++和一点程序设计理论”。

我们介绍的每个主题都至少出于两个目的:提出一种技术、概念或原理,介绍一个实用的语言特性或库特性。例如,我们用一个二维图形绘制系统的接口展示如何使用类和继承。这使我们节省了篇幅(也节省了你的时间),并且还强调了程序设计不只是简单地将代码拼装起来以尽快地得到一个结果。C++标准库是这种“双重作用”例子的主要来源,其中很多主题甚至具有三重作用。例如,我们会介绍标准库中的向量类vector,用它来展示一些广泛使用的设计技术,并展示很多用来实现vector的程序设计技术。我们的一个目标是向你展示一些主要的标准库功能是如何实现的,以及它们如何与硬件相配合。我们坚持认为一个工匠必须了解他的工具,而不是仅仅把工具当作“有魔力的东西”。

对于一个程序员来说,总是会对某些主题比对其他主题更感兴趣。但是,我们建议你不要预先判断你需要什么(你怎么知道你将来会需要什么呢?),至少每一章都要浏览一下。如果你学习本书是作为一门课程的一部分,你的老师会指导你如何选择学习内容。 ...

Get C++程序设计:原理与实践(进阶篇)(原书第2版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.