第1章 绪论 1
1.1 计算机程序设计语言的发展 1
1.1.1 机器语言与汇编语言 1
1.1.2 高级语言 2
1.1.3 面向对象的语言 2
1.2 C++语言概述 3
1.2.1 C++的产生 3
1.2.2 C++的特点 3
1.3 结构化程序设计 4
1.4 面向对象程序设计 5
1.4.1 面向对象的方法 5
1.4.2 面向对象的软件开发 7
1.5 程序的开发过程 8
1.5.1 基本术语 8
1.5.2 程序的开发过程 9
1.6 最简单的程序 10
1.7 练习题 11
第2章 Visual C++开发环境简介 12
2.1 C++语言实验环境配置 12
2.2 Visual C++ 6.0的使用 13
2.2.1 Visual C++介绍 13
2.2.2 Visual C++的安装和启动 13
2.2.3 常用功能键及其意义 14
2.2.4 输入和编辑源程序 14
2.2.5 编译、连接和运行 17
2.2.6 建立和运行包含多个文件的程序的方法 21
2.3 Visual C++ 6.0程相关文件介绍 27
第3章 基本数据类型与表达式 28
3.1 字符集与保留字 28
3.2 基本数据类型 29
3.2.1 基本数据类型 29
3.2.2 常量 31
3.2.3 变量 35
3.3 运算符与表达式 37
3.4 练习题 44
第4章 C++控制结构 46
4.1 C++程序语句 46
4.2 选择结构和if语句 48
4.2.1 用if语句实现选择结构 48
4.2.2 多重选择结构 49
4.3 循环结构和循环语句 54
4.3.1 用while语句构成循环 54
4.3.2 用do...while语句构成循环 56
4.3.3 用for语句构成循环 58
4.4 转向语句 59
4.4.1 break语句 59
4.4.2 continue语句 60
4.4.3 goto语句 61
4.5 练习题 62
第5章 函数 64
5.1 函数概述 64
5.2 函数参数和函数的值 66
5.2.1 形式参数和实际参数 66
5.2.2 函数的返回值 67
5.3 函数的调用 68
5.4 局部变量与全局变量 70
5.4.1 局部变量 70
5.4.2 全局变量 71
5.5 静态局部变量 72
5.6 带默认形参值函数 73
5.7 内联函数 76
5.8 函数的嵌套调用 76
5.9 函数递归调用 80
5.10 函数重载 82
5.11 内部函数与外部函数 85
5.11.1 内部函数 85
5.11.2 外部函数 85
5.12 练习题 87
第6章 数组与指针 88
6.1 数组 88
6.1.1 数组的定义与引用 88
6.1.2 数组的初始化 91
6.1.3 向函数传递数组 92
6.2 指针 94
6.2.1 指针的概念 94
6.2.2 变量与指针 95
6.3 指针与数组 98
6.4 指针与函数 100
6.4.1 指针作为函数参数 100
6.4.2 指针型函数 101
6.4.3 函数指针 102
6.5 指针数组和指向指针的指针 103
6.5.1 指针数组的概念 103
6.5.2 指向指针的指针 105
6.6 字符串 107
6.6.1 用字符数组存储和处理字符串 107
6.6.2 字符串处理函数 109
6.6.3 string类 112
6.7 练习题 115
第7章 引用、结构体和共用体 116
7.1 引用 116
7.1.1 什么是变量的引用 116
7.1.2 引用的简单使用 117
7.1.3 引用作为函数参数 117
7.1.4 用引用返回值 121
7.1.5 用const限定引用 125
7.2 结构体 127
7.2.1 结构体概述 127
7.2.2 结构体类型变量的定义方法及其初始化 128
7.2.3 结构与数组 130
7.2.4 传递结构参数 131
7.2.5 指向结构体变量的指针 133
7.2.6 动态分配和撤销内存的运算符 136
7.3 共用体 138
7.3.1 共用体的概念 138
7.3.2 对共用体变量的访问方式 139
7.3.3 共用体类型数据的特点 139
7.4 用typedef声明类型 141
7.5 练习题 142
第8章 类与对象 144
8.1 类和对象 144
8.1.1 类的声明和对象的定义 145
8.1.2 类的成员函数 148
8.1.3 类的成员访问控制 149
8.1.4 对象成员的引用 150
8.1.5 类和对象的简单应用举例 152
8.2 构造函数和析构函数 157
8.2.1 构造函数 157
8.2.2 拷贝构造函数 164
8.2.3 默认拷贝构造函数 166
8.2.4 浅拷贝与深拷贝 168
8.2.5 析构函数 171
8.2.6 调用构造函数和析构函数的顺序 172
8.3 对象数组与对象指针 173
8.3.1 对象数组 173
8.3.2 对象指针 175
8.4 对象的动态建立和释放 179
8.5 练习题 180
第9章 C++程序的结构 181
9.1 作用域与可见性 181
9.1.1 作用域 181
9.1.2 可见性 183
9.2 生存期 184
9.2.1 静态生存期 184
9.2.2 动态生存期 184
9.3 全局变量与局部变量 186
9.4 静态成员与友元 189
9.4.1 静态成员 189
9.4.2 友元 193
9.4.3 友元类 197
9.5 共用数据的保护 197
9.5.1 常对象 197
9.5.2 用const修饰的对象成员 198
9.6 多文件结构与编译预处理 200
9.6.1 多文件结构 200
9.6.2 编译预处理 201
9.7 练习题 202
第10章 继承与派生 204
10.1 继承与派生概述 204
10.1.1 派生与继承的实例 204
10.1.2 派生类的定义 205
10.1.3 派生类生成过程 206
10.2 派生类成员的访问属性 207
10.2.1 公有继承 208
10.2.2 私有继承 210
10.2.3 保护成员和保护继承 212
10.2.4 多级派生时的访问属性 214
10.3 派生类的构造函数和析构函数 215
10.3.1 派生类的构造函数 215
10.3.2 派生类的析构函数 218
10.4 继承与组合 220
10.5 多重继承 221
10.5.1 声明多重继承的方法 221
10.5.2 多重继承派生类的构造函数 221
10.5.3 多重继承引起的二义性问题 223
10.5.4 虚基类 227
10.6 基类与派生类的转换 231
10.7 继承在软件开发中的重要意义 235
10.8 练习题 235
第11章 多态性 241
11.1 多态性概述 241
11.1.1 多态的类型 241
11.1.2 多态的实现 242
11.2 运算符重载 242
11.2.1 什么是运算符重载 242
11.2.2 运算符重载的方法 244
11.2.3 运算符重载的规则 246
11.2.4 运算符作成员函数 249
11.2.5 运算符作友元函数 252
11.2.6 重载双目运算符 254
11.2.7 重载单目运算符 259
11.2.8 重载流插入运算符和流提取运算符 262
11.3 不同类型数据间的转换 266
11.3.1 标准类型数据间的转换 266
11.3.2 转换构造函数 267
11.3.3 类型转换函数 268
11.4 虚函数 272
11.4.1 虚函数的作用 272
11.4.2 静态关联与动态关联 274
11.4.3 虚析构函数 275
11.5 纯虚函数与抽象类 277
11.5.1 纯虚函数 277
11.5.2 抽象类 277
11.6 练习题 279
第12章 模板 282
12.1 模板的概念 282
12.2 为什么要用模板 284
12.3 函数模板 285
12.4 类模板 286
12.5 练习题 290
第13章 流类库与输入输出 293
13.1 I/O流的概念 293
13.2 输入流 295
13.2.1 构造输入流对象 295
13.2.2 使用提取运算符 295
13.2.3 输入流控制符 296
13.2.4 输入流成员函数 296
13.3 输出流 299
13.3.1 构造输出流对象 300
13.3.2 使用插入运算符和控制格式 300
13.3.3 输出流成员函数 304
13.3.4 二进制输出文件 306
13.4 字符串流 307
13.5 练习题 311
第14章 异常处理和命名空间 313
14.1 异常处理 313
14.1.1 异常处理的任务 313
14.1.2 异常处理的方法 314
14.1.3 在函数声明中进行异常情况指定 319
14.1.4 在异常处理中处理析构函数 320
14.2 命名空间 322
14.2.1 为什么需要命名空间 322
14.2.2 什么是命名空间 326
14.2.3 使用命名空间解决名字冲突 327
14.2.4 使用命名空间成员的方法 329
14.2.5 无名的命名空间 330
14.2.6 标准命名空间std 331
14.3 练习题 332
参考文献 333