第1章 C++基础 1
1.1 C++概述 1
1.1.1 计算机语言种类 1
1.1.2 程序设计方法 2
1.1.3 C++语言及其特点 4
1.1.4 C++程序的基本结构 5
1.1.5 C++程序的开发步骤 8
1.2 C++语言初识 9
1.2.1 数据类型 9
1.2.2 常量 10
1.2.3 变量 12
1.2.4 数据的输入和输出 13
1.3 控制语句 16
1.3.1 顺序控制语句 17
1.3.2 选择控制语句 17
1.3.3 循环控制语句 20
1.3.4 跳转语句 23
1.4 构造数据类型 25
1.4.1 数组类型 25
1.4.2 枚举类型 27
1.4.3 结构体类型 27
1.4.4 共用体类型 29
1.4.5 用户自定义类型 30
1.5 指针 31
1.5.1 指针的定义 32
1.5.2 指针的初始化 32
1.5.3 指针的运算符 34
1.5.4 指针和数组的关系 34
1.5.5 new与delete 35
1.6 函数 37
1.6.1 函数的定义和调用 37
1.6.2 全局变量和局部变量 39
1.6.3 函数的参数传递 42
1.6.4 内联函数 47
1.6.5 函数重载 48
1.6.6 域运算符 49
1.7 断言 50
练习题1 50
上机实验题1 52
第2章 类和对象(一) 53
2.1 类 53
2.1.1 类的声明 53
2.1.2 类的组织形式 55
2.1.3 类的作用域 56
2.1.4 类的成员函数 56
2.1.5 类的访问权限 57
2.1.6 类与结构体类型的区别 58
2.1.7 类的特点 59
2.2 对象 59
2.2.1 对象的定义格式 60
2.2.2 对象的数据成员访问方法 60
2.2.3 对象的成员函数调用方法 61
2.2.4 对象的存储空间 62
2.2.5 对象的赋值运算 63
2.3 构造函数 64
2.3.1 什么是构造函数 64
2.3.2 调用构造函数 65
2.3.3 重载构造函数 68
2.3.4 复制构造函数 69
2.4 析构函数 71
2.4.1 什么是析构函数 71
2.4.2 析构函数的性质 72
2.4.3 析构函数的调用 72
2.5 一个对象的生存期 74
2.6 对象浅复制与深复制 76
2.6.1 对象浅复制 76
2.6.2 对象深复制 77
2.7 静态成员 78
2.7.1 静态数据成员 78
2.7.2 静态成员函数 80
2.8 类成员指针 82
2.8.1 类数据成员指针 82
2.8.2 类成员函数指针 83
2.9 应用实例 84
练习题2 87
上机实验题2 90
第3章 类和对象(二) 91
3.1 常对象和常对象成员 91
3.1.1 常对象 91
3.1.2 常对象成员 93
3.2 类对象数组 94
3.3 子对象 97
3.3.1 has-a关系 97
3.3.2 子对象构造函数的设计和执行次序 98
3.3.3 子对象析构函数的设计和执行次序 99
3.3.4 前向引用声明 102
3.4 嵌套类 103
3.5 局部类 105
3.6 this指针 106
3.7 应用实例 109
练习题3 112
上机实验题3 115
第4章 友元 116
4.1 什么是友元 116
4.2 友元函数 116
4.2.1 声明友元函数 116
4.2.2 操作多个对象成员的友元函数 120
4.2.3 返回类对象的友元函数 122
4.3 友元类 123
4.4 应用实例 126
练习题4 130
上机实验题4 131
第5章 运算符重载 132
5.1 运算符重载概述 132
5.1.1 什么是运算符重载 132
5.1.2 运算符重载函数的定义格式 133
5.1.3 运算符重载函数的调用格式 134
5.2 重载单目运算符 136
5.2.1 重载“++”和“--”运算符 136
5.2.2 重载“->”运算符 138
5.3 重载双目运算符 139
5.3.1 重载双目运算符为成员函数 139
5.3.2 重载双目运算符为友元函数 143
5.4 重载比较运算符 144
5.5 重载赋值运算符 146
5.5.1 重载“+=”和“-=”运算符 146
5.5.2 重载“=”运算符 147
5.6 重载下标运算符 150
5.7 重载new与delete运算符 152
5.8 重载逗号运算符 154
5.9 重载类型转换运算符 155
5.10 重载函数调用运算符 156
5.11 应用实例 157
练习题5 162
上机实验题5 165
第6章 模板 166
6.1 模板概述 166
6.2 函数模板 167
6.2.1 声明函数模板 167
6.2.2 编写函数模板 168
6.2.3 使用函数模板 168
6.2.4 自定义参数类型 172
6.2.5 重载函数模板 173
6.2.6 函数调用的匹配顺序 174
6.3 类模板 175
6.3.1 声明类模板 175
6.3.2 使用类模板 177
6.3.3 类模板作为函数参数 179
6.3.4 类模板作为友元函数的形参类型 180
6.3.5 类模板与静态成员 180
6.3.6 类模板与无类型参数 181
6.4 应用实例 182
练习题6 190
上机实验题6 191
第7章 继承和派生 192
7.1 继承的概念 192
7.2 派生类的概念 193
7.2.1 派生类的定义格式 194
7.2.2 派生类的生成过程 195
7.2.3 类成员的访问权限 196
7.3 继承方式 196
7.3.1 公有继承 196
7.3.2 私有继承 198
7.3.3 保护继承 199
7.4 派生类继承成员的调整 203
7.4.1 恢复访问权限 203
7.4.2 重定义继承成员 204
7.4.3 重命名继承成员 205
7.4.4 屏蔽继承成员 206
7.5 派生类对象的存储组织 206
7.6 派生类的构造函数 208
7.7 派生类的析构函数 211
7.8 基类对象和派生类对象的使用关系 213
7.8.1 派生类对象作为基类对象处理 213
7.8.2 基类指针指向派生类对象 214
7.8.3 派生类指针强制指向基类对象 217
7.9 类层次中的类模板 218
7.9.1 从类模板派生类模板 218
7.9.2 从非模板类派生类模板 219
7.9.3 从类模板派生非模板类 220
7.10 虚基类 221
7.10.1 继承的重复问题 221
7.10.2 虚基类的声明 223
7.10.3 虚基类的构造函数 224
7.10.4 虚基类的析构函数 229
7.11 应用实例 230
练习题7 238
上机实验题7 242
第8章 虚函数和多态性 243
8.1 函数绑定 243
8.2 虚函数及其限制 246
8.2.1 声明虚函数 246
8.2.2 用虚函数实现多态性 248
8.2.3 限制虚函数 252
8.3 纯虚函数和抽象类 254
8.3.1 纯虚函数 254
8.3.2 抽象类 255
8.4 设计统一的公共接口 257
8.5 应用实例 259
练习题8 261
上机实验题8 265
第9章 C++流 266
9.1 什么是流 266
9.1.1 流的概念 266
9.1.2 缓冲流与非缓冲流 267
9.2 流类库 268
9.2.1 主要的流类 268
9.2.2 标准流 269
9.3 输入/输出流 271
9.3.1 输入流 271
9.3.2 输出流 272
9.3.3 流的格式控制 273
9.3.4 流的错误状态 278
9.4 重载输入/输出运算符 279
9.4.1 重载输出运算符“<<” 279
9.4.2 重载输入运算符“>>” 280
9.5 文件的操作 281
9.5.1 文件和流 281
9.5.2 文件的打开与关闭 281
9.5.3 文本文件的读写 283
9.5.4 二进制文件的读写 289
9.6 文件的随机读写 291
9.6.1 输出流随机访问成员函数 292
9.6.2 输入流随机访问成员函数 293
9.7 应用实例 294
练习题9 299
上机实验题9 301
第10章 异常处理和名字空间 302
10.1 异常处理概述 302
10.2 异常处理的实现 303
10.2.1 异常处理的语法 303
10.2.2 捕获异常 306
10.2.3 带有异常声明的函数原型 307
10.3 异常处理中对象的构造与析构 308
10.4 名字空间概述 310
10.4.1 名字空间的定义 311
10.4.2 名字空间的嵌套 316
10.4.3 std名字空间 319
10.5 应用实例 321
练习题10 323
上机实验题10 324
第11章 C++标准模板库基础 325
11.1 STL概述 325
11.1.1 STL的发展和特点 325
11.1.2 C++标准库 326
11.2 STL的使用 328
11.2.1 使用STL的名字空间 328
11.2.2 使用STL的示例 329
11.3 迭代器 330
11.4 容器 334
11.4.1 顺序容器 335
11.4.2 关联容器 339
11.4.3 适配器容器 343
11.5 算法 346
11.5.1 非可变序列算法 347
11.5.2 可变序列算法 347
11.5.3 排序相关算法 348
11.5.4 通用数值算法 348
11.6 string类型 350
11.6.1 使用string类型 350
11.6.2 建立string对象 351
11.6.3 应用find函数 352
11.7 应用实例 357
练习题11 360
上机实验题11 362
第12章 面向对象软件设计 363
12.1 软件工程概述 363
12.2 面向对象的软件工程 364
12.2.1 面向对象的基本概念 364
12.2.2 面向对象的特征 365
12.2.3 面向对象的要素 366
12.2.4 对象模型 367
12.2.5 面向对象的实现 370
12.3 图书管理系统设计 371
12.3.1 系统需求 371
12.3.2 系统设计及编程 372
12.3.3 系统运行 395
练习题12 396
上机实验题12 396
参考文献 397