本书系统讲解了面向对象编程技术与方法的相关内容,包括类与对象的概念,抽象、封装、继承、多态等面向对象编程技术的基本特征。主要内容包括面向对象编程技术概述、C++编程基础、函数、类与对象、运算符重载、继承与派生、多态、模板、异常处理及C++标准库,并在最后给出用面向对象方法开发学生信息管理系统的具体步骤和代码。书中所有例程均在Visual Studio 2019集成开发环境下调试通过。 本书力求让读者能够获得最大收益,不仅能掌握面向对象编程的技术与方法,而且能学会用C++语言编写程序,并能够利用C++标准库或者其他类库高效开发应用软件。 本书内容全面、语言简洁、重点突出、实例丰富、实用性强,既适合作为高等院校计算机、电子信息相关专业的教材或培训机构教材,也适合作为研究生教材及自学参考书。
赵清杰,博士,教授,博士生导师,北京市"智能信息技术”重点实验室副主任。2003年毕业于清华大学计算机系,获计算机应用技术专业博士学位,同年到北京理工大学计算机学院从事教学及科研工作,其中2008.09-2009.09在英国Essex大学计算机系客座研究,2017.09-2018.09在德国汉堡大学计算机系高访。承担包括国家自然科学基金、国家重点研发计划等各种科研课题近20项,在国内外重要期刊和会议上发表论文100余篇,出版著作5本,获准国家发明专利8项、软件著作权登记6项。
第1章 面向对象编程技术概述 1
1.1 两种编程方法举例 1
1.1.1 面向过程编程方法 1
1.1.2 面向对象编程方法 3
1.2 面向对象编程的基本特征 5
1.2.1 抽象 5
1.2.2 封装 5
1.2.3 继承 6
1.2.4 多态 7
1.3 程序的编译、连接与运行 8
1.4 C++标准库简介 10
1.5 小结 11
习题 1 11
第2章 C++编程基础 12
2.1 C++的词法规则 12
2.1.1 字符集 12
2.1.2 单词 13
2.2 C++的数据类型 14
2.2.1 基本数据类型 15
2.2.2 常量与变量 16
2.2.3 自定义数据类型 25
2.2.4 扩展数据类型 29
2.2.5 类型转换 37
2.2.6 typedef与typeid 39
2.3 表达式与语句 40
2.3.1 表达式 40
2.3.2 语句 44
2.4 预处理命令 49
2.4.1 宏定义命令 50
2.4.2 文件包含命令 50
2.4.3 条件编译命令 50
2.5 名字空间 52
2.5.1 名字空间声明 53
2.5.2 使用名字空间 53
2.5.3 标准名字空间std 55
2.6 小结 56
习题 2 56
第3章 函数 58
3.1 函数的定义与声明 58
3.2 函数调用 59
3.2.1 如何调用函数 59
3.2.2 参数传递 60
3.2.3 函数的返回类型 64
3.2.4 嵌套调用与递归调用 66
3.2.5 如何调用库函数 67
3.3 函数指针 67
3.4 static函数 69
3.5 inline函数 70
3.6 函数重载 71
3.7 带默认形参值的函数 72
3.8 小结 73
习题 3 73
第4章 类与对象 75
4.1 类与对象的定义 75
4.1.1 类的定义 75
4.1.2 类对象 78
4.1.3 类的封装性和信息隐藏 80
4.2 构造函数与析构函数 81
4.2.1 构造函数 82
4.2.2 析构函数 91
4.2.3 构造与析构的顺序 92
4.3 赋值成员函数 95
4.4 静态成员 98
4.4.1 静态数据成员 98
4.4.2 静态成员函数 99
4.5 常成员 100
4.5.1 常数据成员 100
4.5.2 常成员函数 101
4.5.3 mutable 102
4.6 指向成员的指针 103
4.6.1 成员指针的定义与使用 103
4.6.2 如何得到成员函数的地址 105
4.7 组合类 106
4.8 友元 108
4.8.1 友元函数 108
4.8.2 友元类 112
4.9 小结 113
习题 4 114
第5章 运算符重载 115
5.1 运算符重载的概念 115
5.2 运算符重载的规则 116
5.3 运算符重载的两种形式 116
5.3.1 重载为类的成员函数 116
5.3.2 重载为类的友元函数 118
5.3.3 两种重载方式讨论 119
5.4 特殊运算符重载举例 120
5.4.1 类型转换运算符 120
5.4.2 复合赋值运算符 121
5.4.3 自增和自减运算符 122
5.4.4 流提取运算符和流插入运算符 124
5.5 函数对象 125
5.6 小结 128
习题 5 128
第6章 继承与派生 129
6.1 基类与派生类 129
6.2 对基类成员的访问控制 130
6.2.1 公有继承 130
6.2.2 私有继承 134
6.2.3 保护继承 135
6.3 派生类的构造函数与析构函数 135
6.3.1 构造函数 135
6.3.2 析构函数 137
6.4 组合与继承的选择 139
6.5 多继承中的歧义 140
6.6 虚基类 141
6.7 小结 144
习题 6 144
第7章 多态 146
7.1 多态性概述 146
7.2 虚函数 147
7.2.1 虚函数的声明与应用 147
7.2.2 虚析构函数 150
7.3 如何实现动态绑定 152
7.4 纯虚函数与抽象类 155
7.5 小结 160
习题 7 160
第8章 模板 161
8.1 函数模板 161
8.1.1 函数模板的定义与使用 161
8.1.2 函数模板重载 164
8.1.3 函数模板专门化 165
8.1.4 使用标准库中的函数模板 166
8.2 类模板 167
8.2.1 类模板的定义与使用 167
8.2.2 类模板专门化 170
8.2.3 作为函数的参数及返回类型 172
8.2.4 使用标准库中的类模板 174
8.2.5 类模板的继承与派生 175
8.3 小结 178
习题 8 179
第9章 异常处理 180
9.1 异常处理概述 180
9.2 异常处理的实现 180
9.3 带异常声明的函数 184
9.4 成员函数抛出异常 185
9.4.1 一般成员函数抛出异常 185
9.4.2 构造函数抛出异常 186
9.4.3 析构函数抛出异常 188
9.5 标准库中的异常类型 189
9.6 小结 192
习题 9 192
第10章 C++标准库 193
10.1 标准库组织 193
10.2 容器 195
10.2.1 容器的成员 196
10.2.2 顺序容器 198
10.2.3 顺序容器适配器 200
10.2.4 关联容器 202
10.2.5 近容器 205
10.3 string 205
10.4 泛型算法 207
10.5 迭代器 210
10.5.1 迭代器的分类 211
10.5.2 使用迭代器 211
10.6 函数对象 215
10.7 流类 220
10.7.1 标准流 221
10.7.2 文件流 222
10.7.3 串流 223
10.7.4 重载提取运算符和插入运算符 224
10.7.5 输入/输出成员函数 225
10.7.6 输入/输出格式控制 228
10.8 数值计算 231
10.8.1 数学函数 231
10.8.2 向量计算 232
10.8.3 复数计算 234
10.8.4 泛型数值算法 235
10.8.5 随机数产生 236
10.9 小结 239
第11章 用面向对象方法开发学生信息管理系统 240
11.1 MFC简介 240
11.2 学生信息管理系统 240
11.2.1 建立基于对话框的应用程序框架 241
11.2.2 设计登录界面 243
11.2.3 设计User类 244
11.2.4 实现用户登录功能 246
11.2.5 设计学生信息管理系统主界面 247
11.2.6 实现学生管理功能 251
11.3 小结 258
附录 ASCII码表 259
参考文献 260