第1章 绪论 1
1.1 软件设计基础 1
1.1.1 结构化方法 1
1.1.2 面向对象方法 2
1.1.3 专家系统方法 3
1.2 计算机语言发展史 3
1.2.1 低级语言阶段 3
1.2.2 高级语言阶段 5
1.2.3 超高级程序设计语言 5
1.2.4 第五代计算机语言 5
1.2.5 面向未来的汉语程序设计语言 6
1.3 C++程序设计语言 6
1.3.1 C+++语言的演变 6
1.3.2 C+++语言的优点 7
第2章 语言基础 8
引言 9
2.1 变量 11
2.1.1 什么是变量 11
2.1.2 变量声明 11
2.2 常量 19
2.3 运算符 20
2.3.1 算术运算符 21
2.3.2 关系运算符 23
2.3.3 逻辑运算符 23
2.3.4 赋值运算符 24
2.3.5 条件运算符 25
2.3.6 逗号运算符 25
2.3.7 sizeof运算符 25
2.3.8 特殊运算符 26
2.3.9 优先级和结合性 27
2.4 表达式 28
2.4.1 表达式的种类 28
2.4.2 表达式的值和类型 29
2.5 输入与输出 31
2.5.1 输入操作 32
2.5.2 输出操作 35
本章总结 40
习题 40
第3章 程序控制流程 41
引言 42
3.1 顺序结构 42
3.2 选择结构 44
3.2.1 if语句 44
3.2.2 switch语句 47
3.3 循环结构 49
3.3.1 while语句 50
3.3.2 do-while语句 51
3.3.3 for语句 53
3.3.4 循环嵌套 54
3.4 其他控制语句 55
3.4.1 goto语句 55
3.4.2 break语句 56
3.4.3 continue语句 58
本章总结 59
习题 60
第4章 程序结构 62
引言 63
4.1 函数基础 63
4.1.1 函数定义 63
4.1.2 函数调用 64
4.1.3 函数说明 65
4.1.4 参数传递 66
4.1.5 函数嵌套调用 68
4.2 3种特殊函数 69
4.2.1 重载函数 69
4.2.2 默认参数值的函数 71
4.2.3 内联函数 71
4.3 函数模板与模板函数 72
4.3.1 定义函数模板 73
4.3.2 函数模板实例化 73
4.3.3 重设模板函数 75
4.4 递归函数 76
4.5 单文件结构 78
4.5.1 作用域 79
4.5.2 可见性 81
4.5.3 局部变量、全局变量与静态变量 82
4.5.4 生存期 85
4.6 多文件结构 86
4.6.1 静态存储类型 86
4.6.2 外部存储类型 88
4.7 编译预处理 89
4.7.1 宏定义 89
4.7.2 文件包含 91
4.7.3 条件编译 92
4.8 综合实例 95
本章总结 96
习题 97
第5章 数组 99
引言 100
5.1 一维数组 101
5.1.1 一维数组的定义、初始化与元素引用 101
5.1.2 数组作为函数参数 102
5.1.3 一维数组的基本操作 103
5.1.4 一维数组的应用 109
5.2 二维数组 111
5.2.1 二维数组的定义、初始化与元素引用 111
5.2.2 二维数组的基本操作 113
5.2.3 二维数组的应用 117
5.3 字符数组 119
5.3.1 字符数组的定义、初始化 119
5.3.2 字符数组的输入/输出 120
5.3.3 字符串处理函数 121
5.3.4 字符数组的应用 124
5.4 动态数组 125
5.4.1 动态数组的定义 126
5.4.2 动态数组的应用 126
5.5 综合实例 127
本章总结 129
习题 130
第6章 链表 132
引言 133
6.1 认识链表 133
6.2 链表节点类型 135
6.3 创建与显示链表 137
6.3.1 创建链表 137
6.3.2 链表的遍历 140
6.4 链表的基本操作 141
6.4.1 查找指定节点 141
6.4.2 统计节点个数 142
6.4.3 插入链表节点 142
6.4.4 删除链表节点 144
6.4.5 链表排序 146
6.5 链表应用 147
6.6 综合实例 152
本章总结 153
习题 154
第7章 类与对象 156
引言 157
7.1 类定义 157
7.1.1 类定义模式 158
7.1.2 类成员访问控制 159
7.1.3 类的数据成员 160
7.1.4 类的成员函数 160
7.2 对象 165
7.2.1 对象声明 165
7.2.2 对象数组 169
7.3 构造函数和析构函数 171
7.3.1 构造函数 171
7.3.2 拷贝构造函数 173
7.3.3 析构函数 176
7.4 静态成员 180
7.5 类的组合 184
7.5.1 什么是类的组合 184
7.5.2 组合类的构造函数 185
7.6 综合实例 187
本章总结 192
习题 193
第8章 继承与派生 197
引言 198
8.1 派生类的声明 200
8.1.1 派生类的定义格式 200
8.1.2 类的继承方式 201
8.1.3 派生类的生成过程 206
8.2 派生类的构造函数和析构函数 207
8.2.1 构造函数 207
8.2.2 析构函数 209
8.3 基类与派生类的关系 210
8.3.1 抽取与重载的关系 211
8.3.2 兼容规则 211
8.4 多重继承 213
8.4.1 多重继承派生类的定义 215
8.4.2 多重继承派生类的构造函数 216
8.5 二义性问题 220
8.5.1 一般二义性问题 220
8.5.2 公共基类的二义性问题 224
8.6 虚基类 226
8.6.1 虚基类的声明 226
8.6.2 虚基类及其派生类的构造函数 226
8.7 访问基类私有成员 230
8.8 引入派生类后的对象指针 231
8.9 综合实例 234
本章总结 237
习题 237
第9章 多态性 239
引言 240
9.1 理解多态性的概念 240
9.1.1 什么是多态性 240
9.1.2 什么是联编 242
9.2 运算符重载 243
9.2.1 为什么要重载运算符 243
9.2.2 运算符重载的规则 244
9.2.3 运算符重载为成员函数 245
9.2.4 运算符重载为友元函数 249
9.3 虚函数 255
9.3.1 为什么要引入虚函数 255
9.3.2 虚函数的定义及使用 257
9.3.3 多继承中的虚函数 259
9.3.4 虚函数的数据封装 261
9.3.5 纯虚函数 262
9.3.6 虚函数的限制 264
9.3.7 虚函数与函数重载的关系 264
9.4 抽象类 265
9.5 类模板 267
9.5.1 为什么使用类模板 267
9.5.2 类模板的定义 268
9.6 综合实例 271
本章总结 276
习题 276
第10章 文件流类 279
引言 280
10.1 C++流库基础 280
10.1.1 streambuf类层次 281
10.1.2 ios类层次 282
10.2 文件流类 283
10.2.1 ifstream类 283
10.2.2 ofstream类 284
10.2.3 fstream类 284
10.3 文件操作 284
10.3.1 声明文件流对象 284
10.3.2 文件打开 285
10.3.3 文件的读/写操作 286
10.3.4 关闭文件 287
10.4 文本文件 288
10.4.1 文本文件的写 288
10.4.2 文本文件的读 289
10.5 二进制文件 290
10.6 随机文件 292
10.7 重载输入/输出运算符 295
10.7.1 重载输入运算符 295
10.7.2 重载输出运算符 297
10.8 可流类 299
10.9 综合实例 301
本章总结 308
习题 309
附录 C/C++常用函数 310
参考文献 312