第1章 绪论 1
1.1 C++语言的特点 1
1.2 面向对象程序设计 1
1.3 C++语言的基本符号 2
1.4 C++语言的词汇 3
1.4.1 关键字 3
1.4.2 标识符 3
1.4.3 常量 3
1.4.4 运算符 3
1.5 最简单的C++程序 4
小结 5
习题 5
第2章 简单数据及运算 7
2.1 程序中的数据 7
2.2 基本数据类型 11
2.2.1 整数类型 11
2.2.2 浮点数类型 15
2.2.3 字符类型 16
2.2.4 字符串类型 17
2.2.5 布尔类型 18
2.3 简单运算 19
2.3.1 算术运算 19
2.3.2 赋值运算 21
2.3.3 逗号运算 23
2.3.4 关系运算 23
2.3.5 逻辑运算 24
2.3.6 sizeof运算 25
2.3.7 位运算 26
2.4 语句 27
2.4.1 声明语句 28
2.4.2 表达式语句 28
2.4.3 复合语句 28
小结 28
习题 28
第3章 流程控制 30
3.1 分支结构 30
3.1.1 用if语句实现选择结构 30
3.1.2 switch语句 34
3.2 循环语句 36
3.2.1 while语句 36
3.2.2 do while语句 37
3.2.3 for语句 38
3.3 循环与选择结构的嵌套 40
3.4 break & continue语句 41
3.5 goto语句 43
小结 44
习题 44
第4章 复杂数据及运算 47
4.1 数组 47
4.1.1 一维数组的声明与使用 48
4.1.2 多维数组的声明与使用 50
4.2 指针 52
4.2.1 数据在内存中的地址 53
4.2.2 指针及指针运算 56
4.3 字符串 61
4.3.1 以数组存放C风格的字符串 61
4.3.2 string类型字符串 63
4.4 枚举类型 67
4.5 运算优先级与类型转换 68
4.5.1 运算优先级 68
4.5.2 类型转换 70
小结 71
习题 71
第5章 抽象与分类 74
5.1 面向过程的功能抽象——函数 74
5.1.1 函数的定义与调用 74
5.1.2 函数参数的单向传递 77
5.1.3 引用类型的参数 78
5.1.4 指针类型的参数 81
5.1.5 数组类型的参数 81
5.1.6 缺省参数值 84
5.1.7 省略参数 85
5.1.8 嵌套与递归调用 85
5.1.9 内联函数 87
5.1.10 函数指针 88
5.1.11 函数的重载 89
5.2 类与对象的概念 91
5.2.1 分类与抽象的思想 91
5.2.2 对象的属性与行为 91
5.3 程序中类的设计 91
5.3.1 对象属性的抽象 92
5.3.2 对象功能与行为的抽象 93
5.4 类的对象 94
5.4.1 对象的定义与初始化 94
5.4.2 对象的析构 99
5.4.3 对象数组 100
5.4.4 通过指针访问对象 103
5.4.5 以对象作为函数的参数 106
5.5 特殊的类 106
5.5.1 结构体 107
5.5.2 联合体 109
5.6 友元 111
5.6.1 友元函数 111
5.6.2 友元类 112
小结 113
习题 113
第6章 自定义类型的运算 121
6.1 用函数实现对象的运算 121
6.2 运算符重载函数 124
6.2.1 运算符重载为成员函数 125
6.2.2 运算符重载为非成员函数 127
6.3 典型运算符的重载 129
6.3.1 重载乘法运算符 129
6.3.2 重载求相反数运算符 131
6.3.3 重载相等比较运算符 133
6.3.4 重载++运算符 135
6.3.5 重载赋值运算符 138
6.3.6 重载类型转换符 142
6.3.7 重载下标访问运算符 144
小结 145
习题 145
第7章 多文件工程和编译预处理命令 150
7.1 多文件工程 150
7.2 外部变量与外部函数 152
7.3 标准C++库和命名空间 154
7.3.1 标准C++库 154
7.3.2 什么是命名空间 155
7.3.3 命名空间的定义 155
7.3.4 命名空间的使用 157
7.3.5 命名空间的嵌套 161
7.4 编译预处理 162
7.4.1 在程序中包含头文件 163
7.4.2 程序中的置换 163
7.4.3 条件预编译 165
小结 168
习题 169
第8章 类的重用 171
8.1 类的组合 171
8.1.1 类的组合的含义 171
8.1.2 类的组合实现 172
8.1.3 前向引用声明 175
8.2 类的继承 176
8.2.1 什么是继承 176
8.2.2 派生类的定义 177
8.2.3 继承成员的访问控制 179
8.2.4 派生类的构造函数和析构函数 182
8.2.5 向上转型 185
8.3 多继承与虚基类 187
8.3.1 多继承中同名隐藏和二义性问题 187
8.3.2 重复继承与虚基类 188
小结 190
习题 191
第9章 数据的共享与保护 195
9.1 变量的生存期与作用域 195
9.1.1 对象的生存期 195
9.1.2 作用域及可见性 196
9.2 同类对象间的数据共享——静态成员 199
9.2.1 静态数据成员 199
9.2.2 静态函数成员 200
9.3 共享数据的保护 202
9.3.1 常引用 202
9.3.2 常成员 203
9.3.3 常对象 206
小结 208
习题 208
第10章 多态性 213
10.1 多态性概述 213
10.2 虚函数 214
10.2.1 函数的覆盖 214
10.2.2 虚函数成员 215
10.2.3 虚析构函数 219
10.3 抽象类 221
小结 223
习题 223
第11章 输入/输出流 230
11.1 C++输入/输出流的概念 230
11.1.1 什么是输入/输出流 230
11.1.2 流类库的头文件 231
11.1.3 预定义流对象 231
11.1.4 I/O流库的类体系 231
11.1.5 输出流举例 232
11.1.6 输入流举例 233
11.2 无格式的输入/输出 234
11.2.1 无格式输入 235
11.2.2 无格式输出 236
11.3 有格式输入/输出 236
11.3.1 默认的输入/输出格式 236
11.3.2 格式标志的设置 237
11.3.3 格式控制操纵符 238
11.4 I/O流的状态 248
11.5 文件流 249
11.5.1 文件的概念 250
11.5.2 文件流的建立 250
11.5.3 文件流的关闭 251
11.5.4 两种特殊的文件流 251
11.6 字符串流 253
11.6.1 字符串流的建立 253
11.6.2 字符串流的缓冲区操作 254
11.7 针对自定义类型重载〉〉和〈〈 255
小结 257
习题 257
第12章 容错及异常处理基础 260
12.1 异常处理的基本思想 260
12.2 抛出异常 261
12.3 捕获异常 263
12.4 异常对象 266
12.5 标准程序库异常处理 267
12.6 异常规范 269
小结 270
习题 270
第13章 数据结构简介 273
13.1 线性群体 273
13.1.1 线性群体的概念 273
13.1.2 直接存取群体——数组 274
13.1.3 顺序存取群体——链表 277
13.1.4 栈 286
13.1.5 队列 288
13.2 群体数据的组织 290
13.2.1 顺序查找 290
13.2.2 折半查找 291
13.2.3 插入排序 293
13.2.4 选择排序 294
13.2.5 交换排序 295
小结 297
习题 297
第14章 模板简介 301
14.1 函数模板 301
14.1.1 函数模板的定义和实例化 301
14.1.2 模板实参的使用 304
14.1.3 模板的常规参数 306
14.2 类模板 307
14.3 类模板与继承 310
小结 312
习题 312
第15章 泛型程序设计与C++ STL简介 319
15.1 泛型程序设计的概念和术语 319
15.1.1 泛型程序设计 319
15.1.2 STL的相关概念和术语 320
15.2 C++ STL中的容器 322
15.2.1 顺序容器 322
15.2.2 关联容器 333
15.2.3 容器适配器 335
15.3 迭代器 338
15.3.1 迭代器的分类 339
15.3.2 迭代器适配器 341
15.3.3 迭代器相关的辅助函数 341
15.4 标准C++库中的算法简介 342
15.4.1 非可变序列算法 343
15.4.2 可变序列算法 345
15.4.3 排序及相关算法 348
15.4.4 数值算法 350
15.5 函数对象 351
15.5.1 函数对象 351
15.5.2 函数适配器 351
小结 352
习题 352