第1章 C++概述 1
1.1 程序设计语言 1
1.1.1 机器语言 1
1.1.2 汇编语言 2
1.1.3 高级语言 2
1.2 算法及算法的表示方法 4
1.2.1 算法的概念 4
1.2.2 算法的表示方法 5
1.3 C++的发展和特点 8
1.3.1 C++的发展 8
1.3.2 C++的特点 9
1.4 C++程序的基本框架 9
1.4.1 最简单的C++程序 9
1.4.2 结构化程序设计框架 12
1.4.3 面向对象程序设计框架 13
1.5 C++程序的开发过程 15
1.5.1 C++程序开发的一般过程 15
1.5.2 用Visual C++开发C++应用程序的步骤 16
习题 18
第2章 C++数据类型 20
2.1 基本数据类型 20
2.1.1 数据在计算机中的存储 20
2.1.2 标识符 21
2.1.3 数据类型修饰符 22
2.2 常量和变量 23
2.2.1 常量 23
2.2.2 变量 25
2.3 运算符和表达式 27
2.3.1 算术运算符和算术表达式 27
2.3.2 赋值运算符和赋值表达式 28
2.3.3 关系运算和逻辑运算 29
2.3.4 条件运算符 31
2.3.5 逗号运算符 31
2.3.6 位运算符 32
2.3.7 sizeof运算符 32
2.3.8 运算符优先级与结合性 33
2.3.9 数据类型转换 34
2.4 数据的输入和输出 35
2.4.1 用cout进行输出 35
2.4.2 用cin进行输入 36
习题 37
第3章 程序控制语句 38
3.1 选择语句 38
3.1.1 if语句 38
3.1.2 switch语句 43
3.2 循环语句 45
3.2.1 while语句 45
3.2.2 do语句 47
3.2.3 for语句 48
3.2.4 循环的嵌套 50
3.2.5 break和continue语句 52
3.2.6 goto语句 53
习题 54
第4章 数组和结构体 55
4.1 数组 55
4.1.1 数组的定义和存储 55
4.1.2 数组元素的引用 57
4.1.3 数组的初始化 58
4.1.4 数组的应用 61
4.2 结构体 70
4.2.1 结构体概述 70
4.2.2 结构体类型变量的定义和引用 71
4.2.3 结构体数组 74
习题 75
第5章 函数 77
5.1 函数概述 77
5.2 函数的定义和调用 79
5.2.1 函数定义的一般形式 79
5.2.2 函数的调用 80
5.2.3 函数原型 82
5.2.4 函数的参数传递 83
5.3 函数的嵌套和递归 94
5.3.1 函数的嵌套调用 94
5.3.2 函数的递归调用 95
5.4 内联函数 97
5.5 函数重载 98
5.6 变量的作用域和存储期 101
5.6.1 程序的内存区域 101
5.6.2 局部变量和全局变量 103
5.6.3 变量的存储期 106
5.6.4 存储类别小结 110
5.7 预处理命令 112
5.7.1 宏定义命令 112
5.7.2 文件包含命令 113
5.7.3 条件编译命令 114
习题 116
第6章 指针和引用 117
6.1 指针 117
6.1.1 地址和指针的概念 117
6.1.2 指针的定义和使用 118
6.1.3 指针与数组 124
6.1.4 指针与函数 133
6.1.5 指针与结构体 136
6.1.6 const修饰符和指针 145
6.2 引用 146
6.2.1 引用的概念 146
6.2.2 引用作函数参数 148
6.2.3 引用返回值 149
6.2.4 用const限定引用 151
习题 151
第7章 从过程抽象到数据抽象 153
7.1 从过程抽象到数据抽象 153
7.1.1 集合的实现与使用 153
7.1.2 将集合的实现与使用分开 156
7.1.3 将集合用链表实现 159
7.1.4 将集合的数据表示和操作封装在一起 161
7.2 面向对象程序设计的基本概念和特征 165
7.2.1 面向对象程序设计的基本概念 165
7.2.2 面向对象程序设计的三大特征 167
7.2.3 从面向过程的程序设计到面向对象的程序设计 172
习题 175
第8章 类和对象 176
8.1 类的定义 176
8.1.1 类的定义 176
8.1.2 类的数据成员 177
8.1.3 类的成员函数 178
8.1.4 类成员的访问控制 180
8.2 对象 181
8.2.1 对象的定义和使用 181
8.2.2 对象在内存中的存放 183
8.2.3 this指针 185
8.3 构造函数和析构函数 186
8.3.1 构造函数 186
8.3.2 带默认参数的构造函数 188
8.3.3 重载构造函数 189
8.3.4 复制构造函数 190
8.3.5 析构函数 194
8.3.6 成员对象的构造和析构 195
8.4 对象数组和对象指针 198
8.4.1 对象数组 198
8.4.2 对象指针 200
8.5 静态成员 203
8.5.1 静态数据成员 204
8.5.2 静态成员函数 205
8.6 友元 206
8.6.1 友元函数 207
8.6.2 友元类 209
8.7 常类型 209
8.7.1 常对象 209
8.7.2 用const修饰的类成员 210
习题 212
第9章 继承与派生 214
9.1 派生类 214
9.1.1 派生类的定义 214
9.1.2 派生类生成过程 215
9.1.3 派生类的构造函数和析构函数 218
9.2 访问控制 220
9.2.1 公有继承 221
9.2.2 私有继承 222
9.2.3 保护继承 223
9.3 虚基类 225
9.3.1 多继承中的二义性问题 225
9.3.2 虚基类的概念 229
9.3.3 虚基类的构造函数 230
习题 234
第10章 多态性 236
10.1 多态性概述 236
10.1.1 静态联编 236
10.1.2 动态联编 238
10.2 运算符重载 240
10.2.1 运算符重载的方法和规则 240
10.2.2 运算符重载为成员函数 244
10.2.3 运算符重载为友元函数 247
10.3 虚函数 248
10.3.1 虚函数的定义及使用 248
10.3.2 动态联编的一种典型实现方案 254
10.3.3 纯虚函数和抽象类 256
10.3.4 虚函数的应用示例 260
习题 264
第11章 模板 265
11.1 模板的概念 265
11.2 函数模板和模板函数 266
11.2.1 函数模板的定义和模板函数的生成 266
11.2.2 函数模板的使用 268
11.2.3 函数模板的特化 270
11.2.4 用函数模板实现基本算法 271
11.3 类模板和模板类 273
11.3.1 类模板的定义 273
11.3.2 类模板的使用 275
11.3.3 类模板的派生 278
11.3.4 类模板的特化 282
11.3.5 string类的使用 285
习题 290
第12章 标准模板库STL 292
12.1 标准模板库STL概述 292
12.1.1 STL的发展历史 292
12.1.2 STL的组成 293
12.2 容器类 295
12.2.1 顺序容器 296
12.2.2 关联容器 313
12.3 STL算法 323
12.3.1 for_each 324
12.3.2 count和count_if 325
12.3.3 copy和remove 327
12.3.4 transform 329
12.4 迭代器 331
12.4.1 迭代器的分类 331
12.4.2 迭代器的特性 335
12.4.3 traits技术 337
12.4.4 与迭代器相关的函数 342
12.4.5 指针与迭代器 343
12.5 函数对象 345
12.5.1 函数对象的概念 345
12.5.2 STL中的函数对象 348
12.6 适配器 349
12.6.1 容器适配器 349
12.6.2 迭代器适配器 355
12.6.3 函数适配器 361
习题 371
第13章 C++的I/O流类库 372
13.1 C++的流及流类库 372
13.1.1 C++的流 372
13.1.2 流类库 372
13.2 格式化I/O 375
13.2.1 用ios类的成员函数进行格式控制 375
13.2.2 使用I/O操纵符进行格式控制 378
13.3 重载I/O运算符 380
13.3.1 重载输出运算符“〈〈” 380
13.3.2 重载输入运算符“〉〉” 382
13.4 文件流 383
13.4.1 文件的打开和关闭 383
13.4.2 文件的读写 386
习题 392