第1章 面向对象程序设计概述 1
1.1 程序设计概述 1
1.1.1 计算机系统 1
1.1.2 算法与程序 4
1.1.3 程序设计 8
1.2 面向对象程序设计 11
1.2.1 面向对象程序设计的基本特点 11
1.2.2 面向对象的软件工程 13
1.2.3 UML(Unified Modeling Language) 14
本章小结 16
习题1 16
第2章 数据类型及其运算 18
2.1 基本数据类型与基本运算 18
2.1.1 基本数据类型 18
2.1.2 基本输入/输出 22
2.1.3 表达式与基本运算 24
2.1.4 应用举例 32
2.2 语句与控制结构 34
2.2.1 语句 34
2.2.2 控制结构 34
2.2.3 转向语句 40
2.2.4 应用举例 43
2.3 复合数据类型 44
2.3.1 数组 44
2.3.2 指针 48
2.3.3 引用 53
2.3.4 字符串 54
2.3.5 应用举例 56
本章小结 57
习题2 58
第3章 函数与程序结构 60
3.1 函数 60
3.1.1 函数概述 60
3.1.2 C++新增的函数机制 62
3.1.3 函数嵌套调用及递归调用 69
3.1.4 函数应用 74
3.1.5 应用举例 82
3.2 存储类、作用域和程序结构 85
3.2.1 变量的存储类 85
3.2.2 标识符的作用域 88
3.2.3 编译预处理 90
3.2.4 程序的多文件结构 92
3.2.5 应用举例 92
本章小结 94
习题3 95
第4章 类与对象 96
4.1 从结构到类 96
4.1.1 结构类型概述 96
4.1.2 结构类型与结构变量定义 97
4.1.3 结构应用 99
4.2 类的定义 104
4.2.1 类的定义 104
4.2.2 定义对象 105
4.2.3 访问类的成员 106
4.2.4 类的程序结构 108
4.3 对象的定义 109
4.3.1 构造函数 109
4.3.2 析构函数 112
4.3.3 三个特殊的构造函数 113
4.3.4 this指针 121
4.3.5 应用举例 124
4.4 类的复合 126
4.4.1 类的复合 126
4.4.2 应用举例 129
4.5 const关键字 130
4.5.1 常见用法 130
4.5.2 应用举例 132
4.6 new/delete运算符 133
4.6.1 基本用法 133
4.6.2 高级用法 136
4.7 友元和静态 138
4.7.1 友元函数和友元类 138
4.7.2 静态成员 141
4.7.3 应用举例 144
本章小结 145
习题4 147
第5章 运算符重载 149
5.1 概述 149
5.1.1 基本概念 149
5.1.2 运算符重载的语法规则 151
5.1.3 运算符重载的形式 152
5.2 成员函数形式的运算符重载 155
5.2.1 复数类Complex 155
5.2.2 有理数类Rational 163
5.3 友元函数形式的运算符重载 169
5.3.1 友元函数形式的语法 169
5.3.2 重载流插入运算符和提取符 174
5.4 几个运算符的重载 176
5.4.1 重载增量/减量运算符 176
5.4.2 重载下标运算符 179
5.4.3 重载函数调用运算符 181
5.4.4 重载转换运算符 184
5.5 综合应用举例 186
本章小结 193
习题5 195
第6章 模板与STL 196
6.1 模板概述 196
6.1.1 数据类型的参数化 196
6.1.2 模板的初认识 198
6.2 函数模板 199
6.2.1 函数模板的定义 199
6.2.2 函数模板的实例化 203
6.2.3 函数模板的重载 206
6.2.4 函数模板对数据类型的需求 207
6.3 类模板 209
6.3.1 类模板的定义 209
6.3.2 类模板的实例化 214
6.4 STL概述 216
6.4.1 STL及其组件 216
6.4.2 常用头文件 217
6.5 函数对象与算法 218
6.5.1 函数对象 218
6.5.2 STL算法 221
6.6 容器 227
6.6.1 string类 227
6.6.2 vector容器类 230
6.6.3 list容器类 232
本章小结 235
习题6 236
第7章 继承与派生 237
7.1 基本概念 237
7.1.1 概述 237
7.1.2 继承的机制 240
7.1.3 继承与复合 241
7.1.4 继承的语法 243
7.1.5 应用举例 247
7.2 访问控制 249
7.2.1 继承的三种方式 249
7.2.2 公有继承应用举例 252
7.3 派生类的构造函数 253
7.3.1 派生类的构造函数 253
7.3.2 派生类对象构造和析构的顺序 259
7.4 几个问题 263
7.4.1 冲突:成员名限定法 263
7.4.2 成员覆盖:支配规则 264
7.4.3 赋值兼容规则 266
7.4.4 虚基类 271
7.4.5 类模板的继承与派生 273
7.4.6 应用举例 274
本章小结 277
习题7 278
第8章 虚函数与多态性 280
8.1 概述 280
8.1.1 程序关联的两种方式 280
8.1.2 问题的引出 281
8.1.3 多态性 282
8.2 虚函数 283
8.2.1 虚函数的定义 284
8.2.2 虚析构函数 290
8.2.3 应用举例 291
8.3 抽象类 292
8.3.1 纯虚函数 292
8.3.2 抽象类 294
8.3.3 应用举例 295
本章小结 297
习题8 298
第9章 C++的I/O流 300
9.1 概述 300
9.1.1 流与缓冲区 300
9.1.2 ios基类 301
9.1.3 标准流对象 301
9.2 标准I/O流 302
9.2.1 标准输出流 302
9.2.2 标准输入流 305
9.3 格式化I/O 310
9.3.1 流格式状态标志位 310
9.3.2 成员函数 312
9.3.3 流操纵算子 313
9.4 文件I/O流 314
9.4.1 基本概念 314
9.4.2 文件操作 315
9.4.3 应用举例 320
9.5 字符串I/O流 323
9.5.1 基本概念 323
9.5.2 字符串输出流 323
9.5.3 字符串输入流 324
本章小结 325
习题9 326
第10章 异常处理 327
10.1 概述 327
10.2 C++的异常处理 327
10.2.1 C++异常处理基础 328
10.2.2 异常处理的执行过程 329
10.2.3 异常的类型匹配规则 330
10.2.4 异常规范 331
10.2.5 异常的重新抛出 332
10.3 异常处理与构造函数和析构函数 333
10.3.1 异常抛出时局部对象的释放 333
10.3.2 在构造函数中抛出异常 334
10.3.3 在析构函数中抛出异常 335
10.4 C++标准库中的异常处理 336
10.4.1 exception基类 336
10.4.2 逻辑异常与运行时异常 337
本章小结 338
习题10 339
参考文献 340