第1章 C++编程体系概述 3
1.1 编程语言的产生 3
1.1.1 C语言的产生 3
1.1.2 C++语言的产生 3
第一部分 C++语言程序设计基础 3
1.2 编程语言的体系划分 4
1.3 程序设计方法 4
1.3.1 结构化程序设计方法 4
1.4.1 C++语言的优势 5
1.4.2 C++语言的内容 5
1.3.2 面向对象程序设计方法 5
1.4 C++语言编程体系 5
1.4.3 选择编程工具 6
1.4.4 学习方法 10
1.5 C++程序结构初步 10
1.5.1 预处理指示符初步 10
1.6.1 面向过程的C语言 11
1.6 使用C++语言编写简单代码 11
1.5.2 注释 11
1.5.3 基本输入输出 11
1.6.2 面向过程的C++语言 12
1.6.3 面向对象的C++语言 13
小结 16
课后习题 16
第2章 C++语法基础 18
2.1 C++数据类型 18
2.1.1 基本数据类型 18
2.1.2 复合数据类型 21
2.1.3 容器类型 21
2.1.4 字符串类型 23
2.1.5 枚举类型 24
2.1.6 C++的常量 25
2.1.7 C++的变量 27
2.2.1 C++标准输入输出流 28
2.2 C++的基本输入输出格式 28
2.2.2 控制输出格式 29
2.3 C++的表达式与运算符 32
2.3.1 算术运算符 32
2.3.2 关系运算符 32
2.3.3 逻辑运算符 33
2.3.4 赋值运算符 33
2.3.5 递增递减运算符 34
2.3.6 条件运算符 35
2.3.7 sizeof运算符 35
2.3.8 位运算符 36
2.3.9 bitset运算符 37
2.3.10 运算符的优先级和结合律 38
2.3.11 类型转换 39
2.4 C++的控制语句 40
2.4.1 顺序结构语句 40
2.4.2 选择结构语句 41
2.4.3 循环结构语句 45
2.4.4 中止语句 48
2.4.5 预处理语句 49
小结 52
课后习题 52
第二部分 面向过程的C++程序设计 57
第3章 指针与数组 57
3.1 存储方式 57
3.1.1 地址的概念 57
3.1.2 地址的运算 57
3.2 指针类型 58
3.2.1 指针的定义 58
3.2.2 指针的运算 59
3.2.3 指向常量的指针和常量指针 60
3.3 引用类型 61
3.3.1 引用的定义 61
3.4 数组类型 62
3.3.2 引用的使用 62
3.4.1 一维数组 63
3.4.2 多维数组 65
3.5 结构类型 66
3.5.1 结构基本概念 66
3.5.2 访问结构成员 67
3.5.3 给结构赋值 68
3.5.4 结构与指针 69
3.6 字符数组 70
3.6.1 定义字符数组 70
3.6.2 字符串处理函数 71
小结 72
课后习题 73
4.1.1 函数的分类 75
4.1.2 函数的定义和调用 75
4.1 函数的基本概念 75
第4章 函数 75
4.2 函数参数的缺省 77
4.3 函数参数的传递 78
4.3.1 按值传递 78
4.3.2 按地址传递 79
4.4 函数的嵌套与递归 82
4.4.1 函数的嵌套 82
4.4.2 函数的递归调用 83
4.5 内联函数 85
4.6 函数的重载 86
4.7 作用域和生命期 88
4.7.1 局部变量 88
4.7.2 全局变量 90
4.7.3 命名空间域 91
小结 93
课后习题 93
5.1 异常的基本概念 95
第5章 异常处理 95
5.2 异常的实现 96
5.2.1 异常的抛出与捕获 96
5.2.2 异常的处理规则 98
小结 99
课后习题 99
第6章 泛型算法初步 101
6.1 泛型算法的必要性 101
6.2.1 泛型算法的组成 102
6.2 泛型算法的基本概念 102
6.2.2 几种常用的iterator 104
小结 107
课后习题 108
第三部分 面向对象的C++程序设计 111
第7章 类的基本概念 111
7.1 类的定义 111
7.1.2 成员函数 112
7.1.1 数据成员 112
7.1.3 类对象成员的访问 114
7.1.4 类的访问限制 115
7.1.5 动态内存分配 116
7.2 构造函数和析构函数 117
7.2.1 构造函数的概念 117
7.2.2 析构函数的概念 118
7.2.3 带参数的构造函数 119
7.2.4 重载构造函数 120
7.3 类中的this指针 121
7.4 类中的const修饰符 122
7.4.1 常对象 122
7.4.2 常成员函数 122
7.4.3 常数据成员 123
7.5 堆与拷贝构造函数 124
7.5.1 堆对象 124
7.5.2 分配堆对象 124
7.5.3 拷贝构造函数 125
课后习题 128
小结 128
第8章 静态成员与友元 129
8.1 静态成员 129
8.1.1 静态数据成员 129
8.1.2 静态成员函数 131
8.2 友元 132
8.2.1 需要友元的原因 133
8.2.2 友元函数 133
8.2.3 友元类 134
小结 136
课后习题 136
第9章 运算符重载 137
9.1 运算符重载的概念 137
9.1.1 常用的运算符 137
9.2.1 重载增量运算符 138
9.1.2 运算符重载的实现 138
9.2 单目运算符重载 138
9.2.2 返回对象 139
9.3 双目运算符重载 141
9.4 赋值运算符重载 142
9.4.1 复合赋值运算符重载 142
9.4.2 赋值运算符的重载 143
9.4.3 类的典型结构 145
9.5 类型转换 146
9.5.1 基本类型到用户定义类型的转换 147
9.5.2 用户定义类型到基本类型的转换 148
9.5.3 用户自定义类型之间的转换 149
小结 152
课后习题 152
10.1 继承的基本概念 154
10.1.1 继承的必要性 154
第10章 继承 154
10.1.2 继承的实现方式 156
10.1.3 继承中的静态数据成员 158
10.2 基类和派生类的关系 159
10.2.1 基类指针 159
10.2.2 继承下的构造函数和析构函数 159
10.2.3 重写基类成员 161
10.2.4 调用基类成员函数 162
10.3 protected关键字详解 163
10.4 保护继承与私有继承 164
10.4.1 公有继承 164
10.4.2 私有继承 165
10.4.3 保护继承 166
10.5 其他代码重用的方式 166
小结 168
课后习题 168
11.1.1 多继承的基本概念 170
第11章 多重继承和多态性 170
11.1 多继承 170
11.1.2 多重继承下的构造函数 171
11.1.3 多重继承下的二义性 173
11.1.4 虚拟继承 175
11.2 虚函数 176
11.3 多态性 178
11.3.1 多态性的分类 178
11.3.2 编译时多态 178
11.3.3 运行时多态 179
11.4 纯虚函数与抽象类 180
11.5 虚析构函数 181
11.5.1 虚析构函数的必要性 181
11.5.2 引入虚析构函数 182
小结 183
课后习题 183
12.1.1 外部存储类型 187
12.1 C++的程序结构 187
第12章 程序结构与C++的输入输出 187
第四部分 准确高效地编写C++应用程序 187
12.1.2 头文件 189
12.2 C++流的概念 190
12.2.1 基本流类库 191
12.2.2 文件流类库 191
12.2.3 字符串流类库 192
12.3.1 运算符<< 193
12.3 三种输出操作 193
12.3.2 成员函数put() 194
12.3.3 成员函数write() 194
12.4 四种输入操作 195
12.4.1 运算符>> 195
12.4.2 成员函数get() 196
12.4.3 成员函数getline() 197
12.4.4 成员函数read() 197
12.5.1 文件的打开和关闭 198
12.5 文件的输入输出 198
12.5.2 文件的读写方法 199
12.5.3 文本文件的读写 201
12.5.4 二进制文件的读写 202
12.5.5 文件的随机读写 203
小结 204
课后习题 205
第13章 模板 206
13.1 模板的基本概念 206
13.1.1 使用模板的必要性 206
13.1.2 模板的分类 207
13.2 函数模板 207
13.2.1 函数模板的定义 207
13.2.2 使用函数模板 208
13.2.3 函数模板的重载 209
13.3.1 类模板的定义 210
13.3.2 使用类模板 210
13.3 类模板 210
小结 211
课后习题 211
第14章 C++编码助手 213
14.1 编码助手概述与安装 213
14.1.1 安装Visual Assist 6.0 213
14.1.2 编码助手的功能 214
14.2 使用编码助手 214
14.2.1 自动拼写检查 215
14.2.2 自动代码补齐 215
14.2.3 自动对齐 215
14.2.4 代码的颜色 215
14.2.5 调用代码框架 216
小结 217
课后习题 217
15.1 C++文件的程序结构 219
15.1.1 程序的排版 219
第15章 C++编码规范 219
15.1.2 注释 222
15.2 命名规则与可读性 225
15.2.1 标识符命名 225
15.2.2 提高程序的可读性 226
15.3 单元代码的规范 227
15.3.1 变量和结构 227
15.3.2 函数 229
15.4 提高可测试性和程序效率 232
15.3.3 类 232
15.4.1 可测性 233
15.4.2 程序效率 233
15.4.3 质量保证 236
15.4.4 使用宏 238
小结 238
课后习题 239
附录A 部分习题参考答案 240
参考文献 246