第1章 C++语言概述 1
1.1 C++语言简介 1
1.1.1 C++语言的发展 1
1.1.2 C++语言的特点 1
1.2 C++程序基本结构 2
1.3 C++程序的开发环境 3
1.3.1 Turbo C++ 4
1.3.2 Visual C++ 6
1.3.3 Dev-C++ 9
1.4 ACM国际大学生程序设计竞赛 11
1.4.1 ACM国际大学生程序设计竞赛简介 11
1.4.2 竞赛规则 12
1.4.3 自动评测系统 13
1.4.4 竞赛学习资源 14
习题1 15
第2章 C++语言编程基础 16
2.1 C++语言词法 16
2.1.1 注释 16
2.1.2 关键字 17
2.1.3 标识符 17
2.1.4 常量 18
2.1.5 变量 18
2.1.6 运算符 18
2.1.7 分隔符 19
2.2 基本数据类型 19
2.2.1 整型 20
2.2.2 浮点型 22
2.2.3 字符型 23
2.2.4 布尔型 24
2.2.5 类型转换 24
2.3 运算符与表达式 25
2.3.1 算术运算符及其表达式 26
2.3.2 赋值运算符及其表达式 27
2.3.3 关系运算符及其表达式 28
2.3.4 逻辑运算符及其表达式 28
2.3.5 位运算符 29
2.3.6 条件运算符 30
2.3.7 运算符的优先级 31
2.4 流程控制语句 31
2.4.1 C++语句 31
2.4.2 if语句与条件选择控制 33
2.4.3 条件表达式 38
2.4.4 switch语句与多项选择 38
2.4.5 while语句 40
2.4.6 do…while语句 40
2.4.7 for语句 41
2.4.8 break语句和continue语句 42
2.4.9 循环嵌套 44
2.4.10 return语句 45
2.4.11 程序设计综合举例 45
2.5 ACM-ICPC中的输入/输出 48
习题2 50
第3章 函数与程序结构 52
3.1 函数与程序结构概述 52
3.2 函数的定义与声明 53
3.2.1 函数的定义 53
3.2.2 函数声明与函数原型 55
3.3 函数参数和函数调用 56
3.3.1 函数形式参数和实际参数 56
3.3.2 函数的返回值 57
3.3.3 函数调用 57
3.4 函数的嵌套与递归调用 58
3.4.1 函数的嵌套调用 58
3.4.2 递归调用 58
3.5 变量作用域和存储类型 60
3.5.1 局部变量与全局变量 60
3.5.2 静态存储变量和动态存储变量 60
3.6 内联函数 62
3.7 重载函数与默认参数函数 63
3.7.1 重载函数 63
3.7.2 默认参数函数 63
3.8 编译预处理 64
3.8.1 文件包含 64
3.8.2 宏定义 64
3.8.3 条件编译 65
习题3 66
第4章 数组与字符串 67
4.1 数组的概念 67
4.2 数组的定义 68
4.2.1 一维数组 68
4.2.2 二维数组 74
4.3 数组作为函数的参数 78
4.3.1 用数组元素做函数实参 78
4.3.2 用数组名做函数参数 79
4.3.3 用多维数组名做函数参数 81
4.4 数组应用举例 82
4.5 字符串 90
4.5.1 字符串概念 90
4.5.2 字符串函数 93
4.5.3 字符串应用举例 96
习题4 99
第5章 指针 102
5.1 指针的概念 102
5.2 指针变量 102
5.2.1 指针定义 102
5.2.2 指针运算符 103
5.2.3 引用变量 104
5.2.4 多级指针与指针数组 106
5.2.5 指针与常量限定符 108
5.3 指针与数组 109
5.3.1 指针与一维数组 109
5.3.2 指针与二维数组 114
5.3.3 指针与字符数组 116
5.3.4 指针与函数 117
5.4 指针运算 121
5.5 动态存储分配 123
5.5.1 new操作符 123
5.5.2 delete操作符 124
习题5 125
第6章 结构体与共用体 128
6.1 结构体 128
6.1.1 结构体的声明 128
6.1.2 结构体变量的引用及初始化赋值 130
6.2 嵌套结构体 131
6.3 结构体数组 132
6.3.1 结构体数组的定义和初始化 133
6.3.2 结构体数组成员的引用 134
6.4 结构体指针 135
6.4.1 指向结构体变量的指针 135
6.4.2 指向结构体数组的指针 136
6.4.3 用结构体变量和指向结构体变量的指针作为函数参数 138
6.5 链表的基本操作 140
6.5.1 链表基本知识 140
6.5.2 内存动态管理函数 141
6.5.3 建立链表 142
6.5.4 输出链表 144
6.5.5 对链表的删除操作 145
6.5.6 对链表的插入操作 146
6.5.7 对链表的综合操作 148
6.6 共用体 150
6.6.1 共用体的概念 150
6.6.2 共用型变量的定义 151
6.6.3 共用型变量的引用 152
6.6.4 共用型数据的特点 153
6.6.5 共用型变量的应用 154
6.7 枚举类型 155
6.8 用typedef定义 158
习题6 159
第7章 类与对象及封装性 161
7.1 类的抽象 161
7.2 类的定义与对象的生成 161
7.3 构造函数和析构函数 166
7.4 构造函数的重载 169
7.5 对象指针 171
习题7 172
第8章 类的深入 174
8.1 友元函数 174
8.2 对象传入函数的讨论 178
8.3 函数返回对象的讨论 181
8.4 拷贝构造函数 184
8.5 this关键字 188
习题8 188
第9章 运算符重载和模板 191
9.1 使用成员函数的运算符重载 191
9.2 友元运算符函数 195
9.3 重载关系运算符 200
9.4 进一步考查赋值运算符 201
9.5 重载new和delete 203
9.6 重载[] 205
9.7 重载其他运算符 208
9.8 模板 211
9.8.1 模板的概念 211
9.8.2 函数模板 212
9.8.3 类模板 213
习题9 216
第10章 继承性 218
10.1 对继承性的理解 218
10.2 类的继承过程 218
10.3 基类访问控制 220
10.4 简单的多重继承 225
10.5 构造函数/析构函数的调用顺序 226
10.6 给基类构造函数传递参数 227
10.7 访问的许可 229
10.8 虚基类 231
习题10 233
第11章 多态性 235
11.1 指向派生类型的指针 235
11.2 虚函数 237
11.3 继承虚函数 239
11.4 多态性的优点 240
11.5 纯虚函数和抽象类 241
习题11 244
第12章 输入/输出流 245
12.1 C++的输入/输出 245
12.2 标准输入/输出流 246
12.3 文件操作与文件流 247
12.4 串流类 250
12.5 格式控制 251
12.5.1 格式控制符 251
12.5.2 流对象的成员函数 253
12.6 ACM-ICPC中的文件输入/输出 255
习题12 258
附录A ASCⅡ码对照表 259
附录B C/C++与标准C++头文件对照表 260
附录C Linux、Unix下编译C++程序 261
参考文献 265