第1章 C++概述 1
1.1 C++的发展历史 1
1.2 程序设计语言和程序设计方法 1
1.2.1 程序和程序设计语言 1
1.2.2 结构化程序设计 2
1.2.3 面向对象的程序设计 2
1.3 C++语言的特点 4
1.4 C++程序开发过程 5
1.5 C++程序结构 5
1.5.1 简单的C++程序 5
1.5.2 C++程序的组成 8
1.5.3 C++程序的书写格式 9
1.6 习题1 9
第2章 C++数据类型 10
2.1 基本数据类型 10
2.2 常量和变量 11
2.2.1 常量 11
2.2.2 变量 13
2.3 运算符和表达式 15
2.3.1 算术运算符 15
2.3.2 赋值运算符 15
2.3.3 等值、关系和逻辑运算符 16
2.3.4 自增、自减运算符 17
2.3.5 条件运算符 17
2.3.6 位运算符 17
2.3.7 sizeof运算符 18
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.5 习题2 30
第3章 控制语句 32
3.1 顺序控制语句 32
3.1.1 输出 32
3.1.2 输入 35
3.2 选择控制语句 36
3.2.1 if语句 36
3.2.2 if...else语句 36
3.2.3 if...else if语句 38
3.2.4 switch语句 39
3.3 循环控制语句 41
3.3.1 while语句 41
3.3.2 do语句 42
3.3.3 for语句 43
3.4 跳转语句 44
3.4.1 break语句 44
3.4.2 continue语句 44
3.4.3 goto语句 45
3.5 习题3 46
第4章 函数和预处理 48
4.1 函数概述 48
4.2 函数的定义和调用 48
4.2.1 函数定义 49
4.2.2 函数的说明 49
4.2.3 函数的调用 50
4.3 函数的参数传递 51
4.4 内联函数 55
4.5 递归函数 56
4.6 函数重载 58
4.7 作用域 60
4.7.1 永久变量、临时变量和静态变量 61
4.7.2 域运算符 63
4.7.3 外部变量 63
4.7.4 自动变量和寄存器变量 63
4.8 文件与预处理 64
4.8.1 宏定义命令 65
4.8.2 文件包含命令 66
4.8.3 条件编译命令 66
4.9 习题4 68
第5章 数组和指针 71
5.1 数组 71
5.1.1 数组说明 71
5.1.2 数组初始化 71
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 指针初始化 78
5.2.3 指针运算 79
5.2.4 指针与数组 80
5.2.5 new与delete 81
5.2.6 字符指针 84
5.3 指针与函数 85
5.3.1 指针作为函数参数 85
5.3.2 指针型函数 86
5.3.3 函数指针 87
5.4 指针与数组 88
5.4.1 指向数组元素的指针 88
5.4.2 指针数组 89
5.5 习题5 90
第6章 类和对象 91
6.1 类 91
6.1.1 类的定义 91
6.1.2 类的成员函数 92
6.1.3 访问权限 93
6.2 类对象 94
6.2.1 对象的定义格式 94
6.2.2 对象成员的表示方法 94
6.3 构造函数和析构函数 96
6.3.1 构造函数 96
6.3.2 重载构造函数 98
6.3.3 析构函数 100
6.4 常类型 102
6.4.1 常引用 102
6.4.2 常对象 103
6.4.3 常对象成员 104
6.5 静态成员 106
6.5.1 静态数据成员 106
6.5.2 静态成员函数 107
6.6 类成员指针 108
6.6.1 类数据成员指针 108
6.6.2 类成员函数指针 109
6.7 this指针 110
6.8 习题6 113
第7章 友元 117
7.1 友元函数 117
7.2 友元类 119
7.3 友元应用实例 122
7.4 习题7 127
第8章 运算符重载 129
8.1 运算符重载概述 129
8.2 单目运算符重载 130
8.3 双目运算符重载 133
8.4 比较运算符重载 135
8.5 赋值运算符重载 136
8.5.1 运算符“+=”和“-=”的重载 136
8.5.2 运算符“=”的重载 137
8.6 下标运算符重载 139
8.7 运算符new与delete重载 141
8.8 逗号运算符重载 142
8.9 类型转换运算符重载 143
8.10 运算符重载应用实例 146
8.11 习题8 149
第9章 引用 151
9.1 引用的概念 151
9.2 引用类型 152
9.2.1 指针引用 152
9.2.2 引用类型的限制 154
9.3 引用作函数参数 155
9.3.1 引用传递参数 155
9.3.2 对象引用作函数参数 156
9.4 引用返回值 157
9.5 常引用 159
9.6 引用的应用实例 160
9.7 习题9 164
第10章 模板 166
10.1 模板的概念 166
10.2 函数模板 166
10.2.1 函数模板说明 167
10.2.2 使用函数模板 167
10.2.3 用户定义的参数类型 170
10.3 类模板 171
10.3.1 类模板说明 171
10.3.2 使用类模板 173
10.4 模板应用实例 176
10.5 习题10 179
第11章 派生和继承 181
11.1 派生类 181
11.1.1 派生类的定义格式 181
11.1.2 派生类生成过程 183
11.2 访问控制 183
11.2.1 公有继承 184
11.2.2 私有维承 185
11.2.3 保护继承 187
11.3 派生类的构造函数和析构函数 189
11.3.1 构造函数 189
11.3.2 析构函数 192
11.4 虚基类 193
11.4.1 作用域分辨符 193
11.4.2 虚基类说明 195
11.4.3 虚基类的初始化 197
11.5 派生和继承实例 199
11.6 习题11 204
第12章 多态性和虚函数 212
12.1 静态联编和动态联编 212
12.2 虚函数 215
12.2.1 虚函数说明 215
12.2.2 多继承中的虚函数 217
12.2.3 虚函数的限制 219
12.3 纯虚函数和抽象类 221
12.3.1 纯虚函数 221
12.3.2 抽象类 223
12.4 抽象类的实例 225
12.5 习题12 228
第13章 C++流和文件流 231
13.1 什么是流 231
13.1.1 预定义流 231
13.1.2 C++的流类库 233
13.2 格式化I/O 234
13.2.1 使用ios成员函数 235
13.2.2 使用I/O操纵符 237
13.3 重载I/O运算符 238
13.3.1 重载输出运算符“<<” 238
13.3.2 重载输入运算符“>>” 239
13.4 检测流操作的错误 241
13.5 文件流 241
13.5.1 文件的打开与关闭 241
13.5.2 文件的读写 243
13.6 习题13 249
第14章 异常处理 250
14.1 异常处理概述 250
14.2 C++异常处理的实现 250
14.2.1 异常处理的语法 251
14.2.2 捕获所有类型的异常 254
14.2.3 带有异常说明的函数原型 255
14.3 异常处理中对象的构造与析构 256
14.4 习题14 258
附录A 实习题 262
实习1 控制语句部分实习题 262
实习2 函数(递归)部分实习题 267
实习3 类和对象部分实习题 270
实习4 友元部分实习题 272
实习5 运算符重载部分实习题 274
实习6 派生和继承部分实习题 278
实习7 虚函数部分实习题 284
实习8 输入输出流部分实习题 287
附录B 习题参考答案 290
习题1 290
习题2 290
习题3 291
习题4 297
习题5 300
习题6 303
习题7 307
习题8 312
习题9 318
习题10 319
习题11 321
习题12 325
习题13 327
习题14 330
参考文献 332