第一章 面向对象技术导论 1
1.1 面向对象技术的形成和发展 1
1.1.1 程序设计方法的变迁 1
1.1.2 面向对象技术的应用和发展 3
1.2 面向对象技术的基本概念 4
1.2.1 对象(Object) 4
1.2.2 消息(Messages)和方法(Methods) 5
1.2.3 类(Class)和类层次(ClassHierarchy) 7
1.2.4 继承性(Inheritance) 8
1.2.5 封装性(Encapsulation) 9
1.2.6 多态性(Polymorphism) 10
1.3 面向对象的系统分析 11
1.3.1 系统分析概述 11
1.3.2 面向对象分析基本原理 12
1.3.3 面向对象分析基本方法 14
1.4 面向对象的系统设计 16
1.4.1 从面向对象分析到面向对象设计 17
1.4.2 面向对象设计基本原理 17
1.4.3 面向对象设计方法与步骤 18
1.5 面向对象程序设计 20
1.5.1 面向对象语言的形成 20
1.5.2 面向对象语言分类 21
1.5.3 C++语言综述 22
习题 27
第二章 C++基本程序设计 29
2.1 C++基本语法单位 29
2.1.1 字符集 29
2.1.2 单词 29
2.1.3 空白 30
2.2 基本数据类型 31
2.2.1 整数类型 31
2.2.2 实数类型 32
2.2.3 字符类型 32
2.2.4 数据类型转换 32
2.3 运算和表达式 34
2.3.1 算术运算与算术表达式 34
2.3.2 关系运算和关系表达式 34
2.3.3 逻辑运算与逻辑表达式 35
2.3.4 位运算及其表达式 35
2.3.5 条件运算与条件表达式 36
2.3.6 逗号表达式 36
2.3.7 赋值运算与赋值表达式 37
2.3.8 sizeof运算符 38
2.3.9 运算符的优先级和结合性 38
2.4 常量和变量 39
2.4.1 字面常量 39
2.4.2 符号常量 40
2.4.3 变量 41
2.5 基本输入输出 41
2.5.1 基本输入输出函数 42
2.5.2 基本插入和提取运算符 44
2.6 语句及流程控制 45
2.6.1 表达式语句、空语句、复合语句 45
2.6.2 选择语句 46
2.6.3 循环语句 48
2.6.4 跳转语句 52
习题 54
第三章 构造数据类型 57
3.1 数组类型 57
3.1.1 一维数组 57
3.1.2 字符数组 60
3.1.3 多维数组 61
3.2 结构类型 64
3.2.1 结构的概念 65
3.2.2 结构数组 66
3.2.3 字段结构 67
3.3 联合类型 69
3.4 枚举类型 71
3.5 类型定义 72
习题 73
第四章 函数 76
4.1 函数定义 76
4.1.1 定义函数 76
4.1.2 函数原型 77
4.2 函数调用与参数传递 78
4.2.1 函数形参 78
4.2.2 函数调用 78
4.2.3 函数参数传递 79
4.3 函数递归调用 82
4.3.1 递归定义 82
4.3.2 递归特点 83
4.4 内联函数 85
4.5 函数重载 85
4.6 存储类 87
4.6.1 作用域与可见性 87
4.6.2 生存期 89
4.6.2 C++存储类 89
4.7 编译预处理 92
4.7.1 宏定义 92
4.7.2 文件包含 94
4.7.3 条件编译 94
习题 96
第五章 指针与引用 99
5.1 地址、指针和指针运算 99
5.1.1 地址与指针 99
5.1.2 指针说明 100
5.1.3 指针的运算 101
5.1.4 动态内存分配 102
5.2 指针与数组 103
5.2.1 数组指针 103
5.2.2 字符数组指针 105
5.2.3 指针数组 106
5.3 指针与函数 108
5.3.1 指针作为函数参数 108
5.3.2 带参main函数和命令行参数 109
5.3.3 返回指针的函数 110
5.3.4 指向函数的指针 111
5.4 结构指针 114
5.4.1 指向结构的指针 114
5.4.2 链表 116
5.5 引用 120
5.5.1 引用的说明 120
5.5.2 引用参数 122
5.5.3 返回引用的函数 122
习题 123
第六章 类 126
6.1 类与对象 126
6.1.1 类的说明 126
6.1.2 类的实现 127
6.1.3 对象说明和应用 127
6.1.4 类与结构 128
6.1.5 类作用域 129
6.2 构造函数与析构函数 130
6.2.1 构造函数 130
6.2.2 析构函数 131
6.3 友元 132
6.4 类的静态成员 133
6.5 对象组织 136
6.5.1 this指针 136
6.5.2 对象数组 137
6.5.3 指向对象的指针 138
6.5.4 组装对象 141
6.6 运算符重载 143
6.6.1 概述 143
6.6.2 运算符重载举例 144
6.6.3 重载new和delete 147
6.7 对象类型转换 150
习题 151
第七章 类继承 155
7.1 基类与派生类 155
7.2 派生类的构造函数与析构函数 158
7.3 派生类的指针 161
7.4 多重继承 162
7.5 二义性及其支配规则 166
7.6 虚基类 169
习题 172
第八章 多态性与虚函数 178
8.1 多态性的概念 178
8.2 虚函数 179
8.2.1 虚函数定义 179
8.2.2 虚析构函数 181
8.2.3 多重继承中虚函数的二义性 182
8.3 纯虚函数与抽象类 186
8.4 运算符虚函数 188
习题 191
第九章 模板 195
9.1 模板概念与定义 195
9.2 函数模板 195
9.2.1 函数模板的引入 195
9.2.2 重载函数模板 197
9.2.3 异常情况处理 199
9.3 类模板 200
9.3.1 类模板的定义 200
9.3.2 类模板作为函数参数 203
9.3.3 类模板作为基类 204
9.3.4 异常情况处理 205
习题 205
第十章 异常处理 207
10.1 异常处理基础 207
10.2 异常类层次 210
10.3 异常接口规范说明 213
10.4 异常处理时的运行环境 214
习题 217
第十一章 输入输出 219
11.1 输入输出的基本概念 219
11.1.1 文件、缓冲区与流 219
11.1.2 C++输入输出机制 220
11.2 标准输入输出函数 221
11.2.1 终端输入输出函数 222
11.2.2 文件的输入输出 224
11.3 非缓冲输入输出函数 231
11.3.1 文件打开与关闭 232
11.3.2 文件的读写 232
11.3.3 文件的随机读写 233
11.4 流类库 234
11.4.1 基本的插入和提取操作 234
11.4.2 格式控制 235
11.4.3 重载提取和插入运算符 240
11.4.4 文件的输入输出 242
习题 247
参考文献 249