第1章 计算机编程与C++概述 1
1.1 简介 1
1.2 计算机语言 1
1.3 C++发展简史 2
1.4 程序设计开发技术简介 3
1.4.1 过程式技术 3
1.4.2 结构化技术 4
1.4.3 对象技术 4
1.5 面向对象程序设计技术 5
1.5.1 封装 5
1.5.2 继承 5
1.5.3 多态性 6
1.6 C++标准库 6
1.7 C++编程简单示例:输出文本 6
1.8 标识符 9
1.9 关键字 9
1.10 变量、数据类型和常量 10
1.10.1 变量 10
1.10.2 基本数据类型 11
1.10.3 变量赋值 11
1.10.4 常量 13
1.11 运算符 14
1.11.1 算术运算符 14
1.11.2 关系运算符 15
1.11.3 逻辑运算符 15
1.11.4 按位运算符 16
1.11.5 sizeof运算符 17
1.11.6 问号运算符 17
1.11.7 复合赋值运算符 17
1.11.8 运算符优先级和结合性 18
1.12 C++编程示例:求平均数 19
小结 20
习题一 21
一、填空题 21
二、判断题 21
三、简答题 21
四、编程练习题 22
第2章 控制结构 23
2.1 简介 23
2.2 控制结构 23
2.2.1 goto语句 23
2.2.2 控制结构 24
2.3 if选择结构 25
2.4 if/else选择结构 29
2.5 while循环结构 31
2.6 do/while循环结构 33
2.7 for循环结构 33
2.8 switch多重选择结构 35
2.9 break和continue语句 37
2.10 C++编程示例:数学运算器 38
小结 40
习题二 41
一、填空题 41
二、判断题 41
三、简答题 41
四、编程练习题 42
第3章 函数 43
3.1 简介 43
3.2 函数声明 44
3.3 函数定义 45
3.3.1 定义不包含参数的函数体 45
3.3.2 定义带有参数的函数体 46
3.4 函数调用 46
3.5 作用域规则 48
3.6 递归 49
3.6.1 无穷递归 50
3.6.2 递归编程 50
3.6.3 直接递归和间接递归 51
3.6.4 递归举例 52
3.6.5 递归与迭代 53
3.7 内联函数 54
3.8 函数重载 55
3.9 C++编程示例:字符处理函数 56
小结 57
习题三 58
一、填空题 58
二、判断题 58
三、简答题 58
四、编程练习题 59
第4章 数组 60
4.1 简介 60
4.2 声明和初始化数组 60
4.2.1 数组声明 61
4.2.2 初始化C++数组 61
4.2.3 访问C++数组 61
4.2.4 数组使用示例 62
4.3 向函数传递数组 63
4.4 数组排序 64
4.4.1 选择排序法 64
4.4.2 插入排序法 65
4.4.3 冒泡排序法 66
4.4.4 快速排序法 67
4.5 数组查找 69
4.5.1 线性查找 69
4.5.2 二分查找 69
4.5.3 比较查找算法 70
4.6 多维数组 71
4.7 字符数组 72
4.8 C++编程示例:统计学生成绩 72
小结 74
习题四 75
一、填空题 75
二、判断题 75
三、简答题 76
四、编程练习题 76
第5章 指针 78
5.1 简介 78
5.2 指针 78
5.2.1 什么是指针 78
5.2.2 指针变量 79
5.2.3 指针运算符 79
5.2.4 指针的算术运算 80
5.2.5 void型指针 81
5.3 const指针 81
5.3.1 指向常量数据的指针 81
5.3.2 指针常量 82
5.3.3 指向常量数据的指针常量 82
5.4 指针与数组 83
5.4.1 两者间的关系 83
5.4.2 内存分配 84
5.4.3 动态分配数组 85
5.5 字符指针 86
5.5.1 字符指针与字符串 86
5.5.2 〈cstring〉头文件 87
5.6 指针数组 89
5.7 指针与函数 90
5.7.1 函数指针 90
5.7.2 向函数传递指针参数 90
5.7.3 函数返回指针 91
5.8 命令行参数 91
5.9 C++编程示例:字符串转换函数 92
小结 94
习题五 94
一、填空题 94
二、判断题 95
三、简答题 95
四、编程练习题 95
第6章 结构 97
6.1 简介 97
6.2 结构 97
6.2.1 声明结构 98
6.2.2 声明结构类型的变量 98
6.2.3 引用结构成员 99
6.3 结构与数组 100
6.4 结构与指针 102
6.5 结构与函数 103
6.6 链表 105
6.6.1 声明节点 106
6.6.2 创建和显示链表 106
6.6.3 插入链表节点 108
6.6.4 删除链表节点 110
6.6.5 链表示例 111
6.7 C++编程示例:扑克牌游戏 112
小结 114
习题六 115
一、填空题 115
二、判断题 115
三、简答题 115
四、编程练习题 116
第7章 类 117
7.1 简介 117
7.2 实现Angle类 117
7.3 类作用域和访问类成员 120
7.4 控制对类成员的访问 121
7.5 构造函数 121
7.5.1 一般概念 121
7.5.2 重载构造函数 121
7.5.3 再谈构造函数:拷贝构造函数 124
7.5.4 浅拷贝和深拷贝 126
7.6 析构函数 128
7.7 读写函数与功能函数 129
7.8 构造函数与析构函数小结 132
7.9 const成员函数和const对象 134
7.10 组合:引用作为其他类的成员 136
7.11 友元 137
7.12 使用this指针 139
7.13 静态类成员 142
7.14 C++编程示例:string标准类 145
小结 150
习题七 150
一、填空题 150
二、判断题 151
三、简答题 151
四、编程练习题 151
第8章 继承 153
8.1 简介 153
8.2 基类与派生类 154
8.3 继承示例 154
8.4 protected成员和访问限定符 160
8.5 派生类中的构造函数与析构函数 162
8.6 多重继承 165
8.7 虚拟继承 168
8.8 多重继承中构造和析构的顺序 170
8.9 C++编程示例:string标准类的迭代器 173
小结 174
习题八 175
一、填空题 175
二、判断题 175
三、简答题 176
四、编程练习题 176
第9章 多态 177
9.1 简介 177
9.2 继承层次中对象间的关系 177
9.3 虚函数 182
9.4 C++编程示例:多态示例 183
9.5 抽象类与具体类 186
9.6 虚函数的注意事项 193
9.7 C++编程示例:字符串查找函数 194
小结 195
习题九 196
一、填空题 196
二、判断题 196
三、简答题 196
四、编程练习题 197
第10章 运算符重载 198
10.1 简介 198
10.2 运算符重载的基本知识 198
10.3 运算符重载示例:重载〉〉运算符 199
10.4 运算符重载的限制 202
10.5 用作类成员和非类成员的运算符函数 202
10.6 C++编程示例:重载自增运算符 205
小结 207
习题十 208
一、填空题 208
二、判断题 208
三、简答题 208
四、编程练习题 209
第11章 流 210
11.1 简介 210
11.2 流的概念 210
11.3 输出流 212
11.3.1 put函数 212
11.3.2 write函数 213
11.4 输入流 213
11.4.1 get函数 214
11.4.2 getline函数 216
11.4.3 read函数 217
11.5 格式化输出 217
11.5.1 设置整数的基数 218
11.5.2 设置浮点数的精度 219
11.5.3 设置宽度 220
11.5.4 对齐 221
11.5.5 填充 222
11.5.6 科学记数法和定点记数法 223
11.5.7 控制大小写 223
11.6 文件与流 224
11.6.1 ofstream类 224
11.6.2 ifstream类 227
11.6.3 fstream类 229
11.7 C++编程示例:字符串流 231
小结 233
习题十一 233
一、填空题 233
二、判断题 234
三、简答题 234
四、编程练习题 234
第12章 模板 236
12.1 简介 236
12.2 模板的概念 236
12.2.1 函数模板 237
12.2.2 类模板 237
12.3 函数模板举例 238
12.4 重载函数模板 240
12.5 类模板 241
12.5.1 类模板简单示例 241
12.5.2 为类模板中成员函数的参数提供默认值 242
12.5.3 重载类模板的成员函数 243
12.5.4 为类模板参数提供默认值 245
12.6 C++编程示例:链表类模板 246
12.7 其他模板问题 251
小结 251
习题十二 251
一、填空题 251
二、判断题 252
三、简答题 252
四、编程练习题 252
第13章 异常处理 254
13.1 简介 254
13.2 异常处理的基本知识 255
13.3 异常规范 257
13.3.1 try块 257
13.3.2 catch块 257
13.3.3 throw语句 257
13.3.4 注意事项 258
13.4 异常处理举例 260
13.5 处理意外异常 263
13.5.1 异常抛出表 263
13.5.2 处理意外异常 264
13.6 异常与构造函数和析构函数 265
13.6.1 构造函数与异常 265
13.6.2 析构函数与异常 266
13.7 new操作失败 266
13.8 标准异常的类层次 270
13.9 C++编程示例:字符串内存处理函数 271
小结 273
习题十三 274
一、填空题 274
二、判断题 274
三、简答题 274
四、编程练习题 275
第14章 MFC库和Windows程序开发 276
14.1 简介 276
14.2 Windows编程基础知识 276
14.2.1 Windows程序的入口点 277
14.2.2 窗口 278
14.2.3 处理事件 280
14.3 Windows程序开发示例 281
14.4 MFC库概述 287
14.5 MFC程序示例:单文档/视图程序 291
14.5.1 创建MFCSample应用程序开发项目 291
14.5.2 修改工具栏 292
14.5.3 添加成员变量 292
14.5.4 添加消息处理函数 293
14.5.5 为消息处理函数添加处理代码 295
14.6 MFC程序示例:对话框 299
14.6.1 创建DlgSample应用程序开发项目 299
14.6.2 创建对话框界面 299
14.6.3 添加消息处理函数 300
14.6.4 添加成员变量和成员函数 301
14.6.5 为消息处理函数添加处理代码 303
小结 307
习题十四 308
一、填空题 308
二、判断题 308
三、简答题 308
四、编程练习题 308
参考文献 310