第1章 C++概述 1
1.1 C++的发展历史 1
1.2 程序设计语言和程序设计方法 1
1.2.1 程序和程序设计语言 1
1.2.2 结构化程序设计 2
1.2.3 面向对象的程序设计 3
1.3 C++语言的特点 4
1.4 C++程序开发过程 5
1.5 C++程序结构 6
1.5.1 简单的C++程序 6
1.5.2 C++程序的组成 8
1.5.3 C++程序的书写格式 9
练习题1 9
上机实习题1 9
第2章 C++数据类型 11
2.1 基本数据类型 11
2.2 常量和变量 12
2.2.1 常量 12
2.2.2 变量 14
2.3 运算符和表达式 16
2.3.1 算术运算符 16
2.3.2 赋值运算符 16
2.3.3 等值、关系和逻辑运算符 17
2.3.4 自增、自减运算符 17
2.3.5 条件运算符 18
2.3.6 位运算符 18
2.3.7 sizeof运算符 19
2.3.8 运算符优先级 20
2.3.9 表达式 21
2.3.10 数据类型转换 22
2.4 复合数据类型 23
2.4.1 枚举类型 23
2.4.2 结构体 24
2.4.3 共用体 26
2.4.4 位域 28
2.4.5 用typedef定义自己的变量类型 29
练习题2 30
上机实习题2 31
第3章 控制语句 32
3.1 顺序控制语句 32
3.1.1 输出 32
3.1.2 输入 35
3.2 选择控制语句 35
3.2.1 if语句 35
3.2.2 if...else语句 36
3.2.3 if...else if语句 37
3.2.4 switch语句 38
3.3 循环控制语句 40
3.3.1 while语句 40
3.3.2 do-while语句 41
3.3.3 for语句 42
3.4 跳转语句 43
3.4.1 break语句 43
3.4.2 continue语句 43
3.4.3 goto语句 44
练习题3 45
上机实习题3 46
第4章 函数和预处理 47
4.1 函数概述 47
4.2 函数的定义和调用 47
4.2.1 函数定义 48
4.2.2 函数的声明 48
4.2.3 函数的调用 49
4.3 函数的参数传递 49
4.3.1 按值传递 50
4.3.2 地址传递 50
4.3.3 引用传递 51
4.3.4 函数的默认参数值 52
4.4 作用域 54
4.4.1 永久变量、临时变量和静态变量 55
4.4.2 域运算符 56
4.4.3 外部变量 57
4.4.4 自动变量和寄存器变量 58
4.5 内联函数 59
4.6 递归函数 60
4.7 函数重载 62
4.8 文件与预处理 63
4.8.1 宏定义命令 64
4.8.2 文件包含命令 65
4.8.3 条件编译命令 65
4.8.4 断言 67
练习题4 67
上机实验题4 70
第5章 数组和指针 71
5.1 数组 71
5.1.1 数组定义 71
5.1.2 数组初始化 72
5.1.3 数组赋值 72
5.1.4 数组越界 72
5.1.5 二维数组 73
5.1.6 多维数组 74
5.1.7 数组作为函数参数 75
5.2 指针 76
5.2.1 指针定义 77
5.2.2 指针的初始化 77
5.2.3 指针运算 79
5.2.4 指针和数组的关系 79
5.2.5 new与delete 80
5.2.6 字符指针 82
5.3 指针与函数 83
5.3.1 指针作为函数参数 84
5.3.2 指针型函数 84
5.3.3 函数指针 86
5.4 指针与多维数组 88
5.4.1 指向数组元素的指针 88
5.4.2 指针数组 89
5.4.3 数组指针 90
练习题5 91
上机实习题5 92
第6章 类和对象 93
6.1 类 93
6.1.1 类的声明 93
6.1.2 类的成员函数 94
6.1.3 访问权限 95
6.2 类对象 96
6.2.1 对象的定义格式 96
6.2.2 对象成员的表示方法 96
6.3 构造函数和析构函数 98
6.3.1 构造函数 98
6.3.2 重载构造函数 100
6.3.3 析构函数 103
6.4 常类型 104
6.4.1 常对象 105
6.4.2 常对象成员 106
6.5 静态成员 107
6.5.1 静态数据成员 107
6.5.2 静态成员函数 108
6.6 类成员指针 111
6.6.1 类数据成员指针 111
6.6.2 类成员函数指针 112
6.7 this指针 113
练习题6 116
上机实习题6 118
第7章 引用 119
7.1 引用的概念 119
7.2 各种数据类型的引用 120
7.2.1 指针引用 120
7.2.2 引用类型的限制 122
7.3 引用作函数参数 122
7.3.1 引用传递参数 122
7.3.2 对象引用作函数参数 123
7.4 引用函数返回值 124
7.5 常引用 126
7.6 引用的应用实例 127
练习题7 130
上机实习题7 131
第8章 友元 132
8.1 友元函数 132
8.2 友元类 135
8.3 友元的应用实例 138
练习题8 142
上机实习题8 143
第9章 运算符重载 144
9.1 运算符重载概述 144
9.2 重载单目运算符 146
9.3 重载双目运算符 148
9.4 重载比较运算符 150
9.5 重载赋值运算符 151
9.5.1 重载运算符“+=”和“-=” 151
9.5.2 重载运算符“=” 152
9.6 重载下标运算符 154
9.7 重载运算符new与delete 157
9.8 重载逗号运算符 158
9.9 重载类型转换运算符 159
9.10 运算符重载应用实例 161
练习题9 164
上机实习题9 165
第10章 模板 166
10.1 模板的概念 166
10.2 函数模板 167
10.2.1 函数模板的声明 167
10.2.2 函数模板的使用 168
10.2.3 用户定义的参数类型 170
10.3 类模板 171
10.3.1 类模板的声明 171
10.3.2 类模板的使用 173
10.4 模板应用实例 175
练习题10 178
上机实习题10 178
第11章 派生和继承 179
11.1 派生类 179
11.1.1 派生类的定义格式 179
11.1.2 派生类生成过程 180
11.2 访问控制 181
11.2.1 公有继承 181
11.2.2 私有继承 182
11.2.3 保护继承 184
11.3 派生类的构造函数和析构函数 186
11.3.1 构造函数 186
11.3.2 析构函数 189
11.4 虚基类 190
11.4.1 作用域分辨符 190
11.4.2 虚基类声明 191
11.4.3 虚基类的初始化 193
11.5 派生和继承实例 196
练习题11 202
上机实习题11 208
第12章 多态性和虚函数 209
12.1 静态联编和动态联编 209
12.2 虚函数 211
12.2.1 虚函数声明 211
12.2.2 多继承中的虚函数 214
12.2.3 虚函数的限制 217
12.3 纯虚函数和抽象类 219
12.3.1 纯虚函数 219
12.3.2 抽象类 221
12.4 抽象类的实例 222
练习题12 227
上机实习题12 229
第13章 C++流和文件流 230
13.1 什么是流 230
13.1.1 预定义流 230
13.1.2 C++的流类库 232
13.2 格式化I/O 233
13.2.1 使用ios成员函数 234
13.2.2 使用I/O操纵符 236
13.3 重载I/O运算符 237
13.3.1 重载输出运算符“<<” 237
13.3.2 重载输入运算符“>>” 238
13.4 检测流操作的错误 239
13.5 文件流 240
13.5.1 文件的打开与关闭 240
13.5.2 文件的读写 241
练习题13 247
上机实习题13 248
第14章 异常处理 249
14.1 异常处理概述 249
14.2 C++异常处理的实现 250
14.2.1 异常处理的语法 250
14.2.2 捕获所有类型的异常 253
14.2.3 带有异常声明的函数原型 254
14.3 异常处理中对象的构造与析构 254
14.4 异常处理的应用实例 256
练习题14 258
上机实习题14 259
第15章 名字空间 260
15.1 名字空间的定义 260
15.2 名字空间的嵌套 265
15.3 std名字空间 267
练习题15 269
上机实习题15 270
附录 综合实习题 271
参考文献 274