你可以由本书发现以下关键主题:\r\n
\r\n ● Generic (泛型)编程风格和Standard Template Library(STL)\r\n
\r\n ● Object-based(个别对象)编程风格和class的设计\r\n
\r\n ● Object-oriented(面向对象)编程风格和classes阶层体系的设计\r\n
\r\n ● Function template 和class template 的设计和运用\r\n
\r\n ● Exception handling(异常处理)与执行期型别鉴定(Run-Time Type Identification)\r\n
\r\n 此外,书后的两份附录极具价值。附录A提供每章最后所列的练习题的完整解答和详细说明。附录B提供一份泛型演算法快速参考手册(含运用实例)。
第1章 C++ 编程基础(Basic C++ Programming) \r\n\r\n1.1 如何撰写 C++ 程序 \r\n1.2 对象的定义与初始化 \r\n1.3 撰写表达式(Expressions)\r\n1.4 条件(Conditaional)语句和循环(Loop)语句\r\n1.5 如何运用 Arrays(数组)和 Vectors(向量)\r\n1.6 指针带来弹性 \r\n1.7 档案的读写\r\n\r\n第2章 面向过程的编程风格(Procedural Programming) \r\n\r\n2.1 如何撰写函数 \r\n2.2 调用(invoking)一个函数 \r\n2.3 提供默认参数值(Default Parameter Values) \r\n2.4 使用局部静态对象(Local Static Objects) \r\n2.5 声明一个 inline函数 \r\n2.6 供应重载化函数(Overloaded Functions)\r\n2.7 定义并使用 Template Functions(模板函数)\r\n2.8 函式函数指针(Pointers to Functions)带来更大的弹性\r\n2.9 设定表头档头文件(Header Files)\r\n\r\n第3章 泛型编程风格(Generic Programming) \r\n\r\n3.1 指针的数学运算\r\n3.2 了解 Iterators(泛型指针) \r\n3.3 所有容器的共通操作\r\n3.4 使用循序式容器(Sequential Containers) \r\n3.5 使用泛型算法\r\n3.6 如何设计一个泛型算法\r\n3.7 使用 Map\r\n3.8 使用 Set \r\n3.9 如何使用 Iterator Inserters \r\n3.10 使用 iostream Iterators \r\n\r\n第4章 以对象为基础(Object-Based)的编程风格 \r\n\r\n4.1 如何实现一个 Class\r\n4.2 什么是 Constructors(构造函数)和 Destructors(析构函数)\r\n4.3 何谓 mutable(可变)和 const(不变)\r\n4.4 什么是 this 指针\r\n4.5 Static Class Member(静态的类成员)\r\n4.6 打造一个 Iterator Class \r\n4.7 合作关系必须建立在友谊的基础上\r\n4.8 实现一个 copy assignment operator\r\n4.9 实现一个 function object \r\n4.10 将 iostream运算符重载\r\n4.11 指针:指向 Class Member Functions\r\n\r\n第5章 面向对象(Object-Oriented)编程风格 \r\n\r\n5.1面向对象(Object-Oriented 编程概念 \r\n5.2 漫游:面向对象编程思维\r\n5.3 不带继承的多态(Polymorphism without Inheritance) \r\n5.4 定义一个抽象基类(Abstract Base Class)\r\n5.5 定义一个派生类(Derived Class)\r\n5.6 运用继承体系(Using an Inheritance Hierarchy) \r\n5.7 基类应该多么抽象?\r\n5.8 初始化、解构、与复制(Initialization, Destruction, an Copy)\r\n5.9 在派生类中定义一个虚拟函数\r\n5.10执行期的型别鉴定机制(Run-Time Type Identification) \r\n\r\n第6章 以 template 进行编程\r\n\r\n6.1 被参数化的型别(Parameterized Types)\r\n6.2 Class Template 的定义\r\n6.3 Tempalte 型别参数(type parameters)的处理 \r\n6.4 实作一个 Class Template\r\n6.5 一个以 Function Template 完成的 Output运算符 \r\n6.6 常量表达式(Constant Expressions)与默认参数值(Default Parameters) \r\n6.7 以 Template 参数作为一种设计策略 \r\n6.8 Member Tempalte Functions\r\n\r\n第7章 异常处理(Exception Handling) \r\n\r\n7.1 抛出异常(Throwing an Exception)\r\n7.2 捕捉异常(Catching an Exception)\r\n7.3 提炼异常(Trying for an Exception) \r\n7.4 局部资源的管理 \r\n7.5 标准异常(The Standard Exceptions)\r\n\r\n附录A 习题解答\r\n附录B 泛型算法手册(Generic Algorithms Handbook)\r\n附录C 中英术语对照(侯捷)\r\n索引\r\n
本书由七章和两份附录构成。第一章借着撰写一个具有互动性质的小程序,描绘c++语言预先定义的部分。这一章涵盖了内建的数据型别、语言预先定义好的运算符(operators)、标准程序库中的vector和string类、条件语句和循环语句、输入和输出用的iostream程序库。我之所以在本章介绍vector和string两个classes,是因为我想鼓励读者多多利用它们取代语言内建的数组和C-style字符串。
第二章解释函数的设计与使用,并针对C++函数的多种不同风貌一一检视,包括inline函数、重载(overloaded)函数、functiontemplate,以及函数指针(pointers fo functions)。
第三章涵盖所谓的Standard Template Library(STL):一组容器类(包括vector,list,set,map等等)、一组作用于容器身上的泛型算法(包括s'ort(),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的设计不仅要将元素型别参数化,亦要将其缓冲区容量参数化。本章的行进路线围绕在---5<树(binarytree)classtemplate实现上。
最后一章,即第七章,说明如何使用C++提供的异常处理机制(exception handling facility),并示范如何将它融人标准程序库所定义的异常体系中。附录A是本书习题解答。附录B提供最被广泛运用的一些泛型算法的相关讨论与使用例程。
关于程序代码
本书的所有程序,以及习题解答中的完整程序代码,皆可在网上取得。你可以在Addison Wesley Longman的网站 (www.awl.com/cseng/titles/0-201-48518-4) 或我的个人首页(www.objectwrite.com)中取得。所有程序皆在Visual C++ 5.0环境中以Intel C++编译器测试过,并且也在Visual C++ 6.0环境中以Microsoft C++编译器测试过。你或许需要稍微修改程序代码,才能在自己的系统上编泽成功。如果你需要做任何修改并且也做了,请将修改结果寄一份给我(slippman@objectwrite.com),我会将它们附上你的大名,附于习题解答程序代码中。注意,本书并未显示所有程序代码。