《C++ primer》读书笔记
为了更好地理解《C++ primer》,这里我先看了《Essential C++》,先把后者这本书的大致轮廓概括一下,然后再看前者这本书,应该会更轻松,以前我也看了一些C++方面的书籍,不过粗浅阅览,大多忘记了。
侯捷:
献给每一位对C++/Oop有所渴望的人,正确的观念重于一切。
第一章借着撰写一个具有互动性质的小程序,描绘C++语言预先定义的部分。这一章涵盖了内建的数据型别、语言预先定义好的运算符( operators)、标准程序库中的vector 和string 类、条件语句和循环语句、输入和输出用的iostream 程序库、我之所以在本章介绍vector和string两个classes,是因为我想鼓励读者多多利用它们取代语言内建的数组和C-style字符串。
第二章解释函数的设计与使用,并针对C++函数的多种不同风貌一一检视,包括inline 函数、重载(overloaded) 函数、function template,以及函数指针( pointers to functions)。
第三章涵盖所谓的Standard Template Library (STL) : 一组容器类(包括vector,list,set ,map等等),一组作用于容器身上的泛型算法(包括sort(), copy(), merge()等等)。附录B依字典顺序列出最常被广泛使用的泛型算法,并逐一附上使用例程。
身为一个C++程序员,你的主要任务便是提交classes 以及面向对象的classes 层次体系,第四章带领你亲身遍历classes机制的设计与使用过程。在这个过程中,你会看到如何为自身的应用系统建立起专属的数据型别。第五章说明如何扩展classes,使多个相关的classes 形成族系,支持面向对象的classes 层次体系。以我在梦工厂动画电影公司(Dreamworks Animation) 担任顾问的经验为例,那时候我们设计了一些classes,用来进行4个频道影像合成之类的工作,我们使用继承和动态绑定(dynamic binding)技术,定义影像合成所需的classes 层次体系,而不只是设计8个相互独立的classes。
第六章的重头戏是class templates,那是建立class 时的一种先行描述,让我们得以将class用到的一个(或多个)数据型别或数据值,抽离并参数化。以vector 为例,可能需要将其元素的型别加以参数化。buffer的设计不仅要将元素型别参数化,亦要将其缓冲区容量参数化。本章的行进路线围绕在二叉树(binary tree) class template实现上。
最后一章,即第七章,说明如何使用C++提供的异常处理机制(exception handling facility) ,并示范如何将它融入标准程序库所定义的异常体系中。附录A是本书习题解答。附录B提供最被广泛运用的一些泛型算法的相关讨论与使用例程。
也就是书的整体结构是:
1、基于C++自带的基础进行面向过程编程;
2、泛型编程风格;
3、基于对象的编程风格;
4、面向对象编程风格;
5、以template(模板)编程风格;
6、异常处理(主要应用在库和大型程序项目)。
接下来,以上面的结构进行展开。