第1章 绪论 1
1.1 计算机程序设计语言的发展 1
1.1.1 机器语言与汇编语言 1
1.1.2 高级语言 2
1.1.3 面向对象程序设计语言 2
1.2 计算机程序设计方法 3
1.2.1 计算机程序开发过程 3
1.2.2 面向对象程序设计方法 3
1.2.3 UML简介 5
1.2.4 简单的C++程序 8
1.2.5 利用Visual C++ 6.0开发C++程序实例 9
1.3 计算机算法 11
1.3.1 算法基本概念 11
1.3.2 算法表示方法 11
1.4 计算机中信息的表示和存储 14
1.4.1 计算机中的数制 14
1.4.2 信息的存储 17
1.4.3 计算机中信息的表示 17
1.5 小结 20
1.6 习题 20
第2章 C++程序设计基础 22
2.1 基本数据类型和表达式 22
2.1.1 基本数据类型 22
2.1.2 关键字和标识符 23
2.1.3 常量 23
2.1.4 变量 26
2.1.5 自定义数据类型 27
2.1.6 运算符和表达式 31
2.1.7 C++语句 39
2.2 数据的基本输入和输出 40
2.2.1 标准输入/输出流对象 40
2.2.2 数据的输入/输出 40
2.3 算法的基本控制结构 42
2.3.1 选择结构 42
2.3.2 循环结构 47
2.3.3 循环结构与选择结构的嵌套 50
2.3.4 其他控制语句 52
2.4 小结 54
2.5 习题 55
第3章 函数与程序结构 59
3.1 函数定义与使用 59
3.1.1 函数的定义 59
3.1.2 函数的调用 61
3.1.3 函数的声明 66
3.1.4 函数调用时的参数传递和返回值 68
3.1.5 带默认形参值的函数 74
3.2 内联函数 75
3.3 递归函数 76
3.3.1 递归函数的定义与调用 76
3.3.2 递归函数的执行过程 77
3.4 函数重载 79
3.5 系统函数 80
3.6 C++程序结构 81
3.6.1 函数组织和多文件结构 82
3.6.2 头文件 84
3.6.3 标识符的作用域与生存期 85
3.6.4 命名空间 92
3.6.5 编译预处理命令 93
3.7 应用实例 96
3.8 小结 97
3.9 习题 98
第4章 数组、指针与字符串 102
4.1 数组 102
4.1.1 数组的定义与使用 102
4.1.2 数组作为函数参数 109
4.2 字符数组与C字符串 110
4.2.1 字符数组的定义与使用 110
4.2.2 用字符数组存放字符串 111
4.2.3 C字符串的输入和输出 112
4.2.4 字符串处理函数 112
4.3 指针 116
4.3.1 指针变量的定义 116
4.3.2 指针的运算 121
4.3.3 指针与数组 124
4.3.4 指针与函数 128
4.3.5 二级指针 131
4.4 动态内存分配 132
4.4.1 new运算和delete运算 132
4.4.2 动态内存分配与释放函数 134
4.5 带参的main函数 135
4.6 应用实例 136
4.7 小结 139
4.8 习题 139
第5章 类与对象 144
5.1 类 144
5.1.1 类的定义 144
5.1.2 类成员的访问控制 146
5.1.3 类的成员函数 147
5.1.4 const数据成员和成员函数 150
5.1.5 static数据成员和成员函数 151
5.2 对象 154
5.2.1 对象的定义和使用 154
5.2.2 常对象 155
5.2.3 对象数组 156
5.2.4 对象指针 157
5.2.5 this指针 160
5.3 构造函数和析构函数 161
5.3.1 构造函数 161
5.3.2 析构函数 165
5.3.3 拷贝构造函数 166
5.4 类的组合 170
5.4.1 组合类 170
5.4.2 前向引用声明 177
5.5 友元 179
5.5.1 友元函数 179
5.5.2 友元类 181
5.6 应用实例 182
5.7 小结 185
5.8 习题 186
第6章 继承与派生 190
6.1 类的继承与派生 190
6.1.1 继承的概念 190
6.1.2 派生类的定义 191
6.1.3 派生类的生成过程 192
6.2 继承方式 192
6.2.1 公有继承 192
6.2.2 私有继承 194
6.2.3 保护继承 195
6.3 Liskov替换准则 195
6.4 派生类的构造与析构 197
6.4.1 派生类构造函数 197
6.4.2 析构函数及执行顺序 199
6.5 多继承 200
6.5.1 多继承概念 200
6.5.2 多继承派生类的定义形式 200
6.5.3 多继承的构造函数与析构函数 202
6.6 派生类成员的标识与访问 206
6.6.1 作用域分辨 206
6.6.2 多继承存在的问题 207
6.7 虚拟继承 208
6.7.1 虚拟继承的声明 208
6.7.2 虚基类初始化 210
6.8 应用实例 212
6.9 小结 213
6.10 习题 214
第7章 多态性 219
7.1 多态的类型和实现 219
7.1.1 多态的类型 219
7.1.2 多态的实现 220
7.2 运算符重载 220
7.2.1 运算符重载的规则 221
7.2.2 运算符重载为成员函数 221
7.2.3 运算符重载为友元函数 224
7.3 虚函数 228
7.3.1 虚函数的定义和使用 229
7.3.2 虚析构函数 230
7.4 抽象类 230
7.4.1 纯虚函数 231
7.4.2 抽象类 231
7.5 应用实例 232
7.6 小结 234
7.7 习题 234
第8章 模板 238
8.1 函数模板 238
8.1.1 函数模板的定义 238
8.1.2 函数模板的使用 240
8.2 类模板 241
8.2.1 类模板的定义 242
8.2.2 类模板的使用 242
8.3 C++标准模板库 244
8.3.1 容器和容器适配器 245
8.3.2 迭代器 254
8.3.3 STL的算法 257
8.4 应用实例 261
8.5 小结 264
8.6 习题 264
第9章 流类库与输入/输出 267
9.1 I/O流的概念和流类库结构 267
9.2 控制台输入/输出 269
9.2.1 基于I/O类库的输入/输出 269
9.2.2 基于标准I/O函数库的输入/输出 281
9.2.3 重载提取和插入运算符 282
9.3 文件的输入/输出 283
9.3.1 基于I/O类库的输入/输出 284
9.3.2 基于I/O函数库的输入/输出 292
9.4 字符串的输入/输出 293
9.5 应用实例 296
9.6 小结 301
9.7 习题 302
第10章 异常处理 306
10.1 异常机制 306
10.2 C++异常处理的实现 307
10.2.1 异常处理过程 307
10.2.2 异常接口声明 310
10.3 标准程序库异常的用法 312
10.4 异常处理中的构造与析构 313
10.5 多个异常事件的处理 315
10.6 应用实例 316
10.7 小结 317
10.8 习题 317
习题参考答案 322
附录A 337
附录B 338
参考文献 340