第1章 C++初步 1
1.1 程序设计语言的发展 1
1.2 面向过程的程序设计 2
1.3 面向对象程序设计 3
1.4 C++的诞生 4
1.5 程序开发过程 5
1.6 最简单的C++程序 6
1.7 内存的抽象表示和使用 8
本章小结 9
习题和思考题 10
第2章 基本数据类型与表达式 11
2.1 C++的词法记号和标识符 11
2.1.1 字符集 11
2.1.2 关键字 11
2.1.3 标识符 12
2.1.4 分隔符 12
2.1.5 空白 12
2.2 基本数据类型 12
2.3 变量和常量 15
2.3.1 ?量 15
2.3.2 常量 17
2.4 运算符和表达式 20
2.4.1 表达式 20
2.4.2 语句和块 20
2.4.3 运算符 20
2.5 基本输入/输出 29
2.5.1 标准输入流 29
2.5.2 标准输出流 30
2.5.3 I/O流的格式控制 31
2.5.4 文件的输入和输出 34
2.6 使用string类型处理字符串 36
2.6.1 string对象的定义和初始化 36
2.6.2 string对象的操作 36
本章小结 38
习题和思考题 38
第3章 C++控制语句 42
3.1 算法的基本控制结构 42
3.1.1 程序的3种控制结构 42
3.1.2 算法及其表示 43
3.2 if选择语句 45
3.2.1 没有else分支的形式 45
3.2.2 双分支形式 46
3.2.3 多分支形式 47
3.2.4 if语句的嵌套 48
3.3 switch选择语句 50
3.4 循环语句 54
3.4.1 while循环语句 55
3.4.2 do-while循环语句 57
3.4.3 for循环语句 58
3.4.4 break语句和continue语句 61
3.5 循环嵌套 62
3.5.1 循环结构嵌套 62
3.5.2 循环结构和选择结构的相互嵌套 63
3.6 应用举例 65
本章小结 69
习题和思考题 69
第4章 数组及其他自定义类型 72
4.1 数组 72
4.1.1 数组定义及初始化 72
4.1.2 访问数组元素 75
4.1.3 字符数组 77
4.1.4 多维数组 79
4.1.5 数组应用举例 84
4.1.6 数组小结 87
4.2 枚举类型 87
4.2.1 枚举类型定义 88
4.2.2 枚举变量定义及使用 88
4.2.3 应用举例 89
4.3 结构类型 89
4.3.1 结构类型的定义和初始化 90
4.3.2 结构数组 92
4.4 联合类型 94
本章小结 96
习题和思考题 97
第5章 函数 100
5.1 函数概述 100
5.1.1 自定义函数概述 100
5.1.2 库?数概述 101
5.2 函数定义及使用 102
5.2.1 函数的定义 102
5.2.2 函数原型 104
5.2.3 return语句 106
5.2.4 函数调用方式 108
5.3 函数调用的执行机制和参数传递方式 109
5.3.1 函数调用的执行机制 110
5.3.2 函数的参数传递方式 111
5.4 递归函数和递归调用 117
5.4.1 嵌套调用 117
5.4.2 递归函数和递归调用 118
5.5 内联函数 121
5.6 重载函数 121
5.7 默认参数值的函数 122
5.8 全局变量与局部变量 124
5.8.1 局部变量 124
5.8.2 全局变量 124
5.8.3 作用域 125
5.9 变量的存储类型和生存期 126
5.9.1 变量的存储类型 127
5.9.2 生存期 129
5.9.3 多文件结构 129
5.10 编译预处理 130
5.11 结构化程序设计举例 133
本章小结 136
习题和思考题 136
第6章 指针和引用 140
6.1 指针的概念 140
6.1.1 指针和指针变量 140
6.1.2 指针变量的声明和初始化 141
6.2 指针的运算 142
6.2.1 指针的赋值运算 142
6.2.2 指针的间接引用运算 143
6.2.3 指针的算术运算 143
6.2.4 指针的关系运算和逻辑运? 144
6.2.5 void类型指针 144
6.2.6 指针类型转换 146
6.3 指针访问动态内存 146
6.3.1 动态内存的申请和释放 147
6.3.2 动态数组空间的申请和释放 147
6.3.3 内存泄漏和指针悬挂 147
6.4 指向结构体的指针 148
6.5 引用概念 149
6.5.1 引用的声明 149
6.5.2 引用的使用 150
6.6 指针和引用作为函数的参数 150
6.6.1 指针作为函数参数 150
6.6.2 引用作为函数参数 152
6.6.3 常指针和常引用 153
6.6.4 指针的指针作为参数 155
6.7 指针和引用作为函数的返?值 157
6.7.1 指针函数 157
6.7.2 引用作为函数的返回值 158
6.8 指针和字符串 159
6.8.1 字符串处理的两种方式 159
6.8.2 字符串操作函数 160
6.9 通过指针访问数组 161
6.9.1 通过指针访问一维数组 161
6.9.2 指针数组 163
本章小结 164
习题和思考题 165
第7章 类与对象 167
7.1 类和对象的定义 167
7.1.1 基本概念 167
7.1.2 类的声明 168
7.1.3 类的实现 170
7.1.4 对象的定义和使用 171
7.1.5 类的作用域与可见性 172
7.2 对象的使用 174
7.2.1 对象指针 174
7.2.2 this指针 175
7.2.3 对象数组 176
7.2.4 对象作为普通函数的参数与返回值 177
7.3 构造函数 180
7.4 析构函数 184
7.5 类的静态成员 186
7.5.1 静态数据成员 186
7.5.2 静态成员函数 188
7.6 类成员的保护和使用 188
7.6.1 类的封装性 188
7.6.2 友元 189
7.6.3 常对象和常成员 192
7.7 运算符重载 194
7.7.1 运算符重载的使用及其限制 194
7.7.2 运算符重载的定义 195
7.8 类的组合 199
7.9 应用举例 201
7.10 面向对象分析和设计 206
7.10.1 软件工程 206
7.10.2 面向对象分析 206
7.10.3 面向对象设计 207
7.10.4 面向对象的意义 207
本章小结 208
习题和思考题 209
第8章 继承与派生 213
8.1 继承的概念 213
8.2 定义基类和派生类 214
8.2.1 简单的继承和派生 214
8.2.2 定义派生类 216
8.2.3 访问控制和继承的关系 216
8.2.4 同名覆盖 218
8.3 构造函数和析构函数 219
8.3.1 基类只有无参构造函数 219
8.3.2 派生类构造函数 219
8.3.3 包含内嵌对象的派生类构造函数 222
8.3.4 析构函数 230
8.4 转换与继承 232
8.4.1 派生类到基类的转换 232
8.4.2 基类到派生类不存在转换 235
本章小结 235
习题和思考题 235
第9章 多态 239
9.1 多态的概念 239
9.1.1 面向对象程序设计中的多态 239
9.1.2 多态的实现——联编 240
9.2 重载、覆盖与静态联编 240
9.2.1 重载与静态联编 240
9.2.2 覆盖与静态联编 241
9.3 虚函数与运行时多态 247
9.3.1 虚函数 248
9.3.2 虚析构函数 251
9.4 纯虚函数与抽象类 254
9.5 模板 255
9.5.1 函数模板 255
9.5.2 函数模板使用中的问题 258
9.5.3 重载函数模板 260
9.5.4 类模板 261
本章小结 264
习题和思考题 265
附录 常用C++标准类库 268
附1 I/O流类 268
附1.1 标准输出流对象 269
附1.2 标准输入流对象 270
附1.3 文件输出流 270
附1.4 文件输入流 271
附2 string类 272
附2.1 string对象的初始化 272
附2.2 string对象的基本操作 272
附3 vector类 274
参考文献 276