C++程序基础知识(基本句子结构,I/O,函数,类与对象,数据共享与保护,数组与指针,继承,多态,异常处理).
C++支持面向过程与面向对象两种编程模式,本教材在结构安排上,注重这两种模式的过渡,结合到面向对象的专题论述,让学生从传统过程C模式程序设计真正进入面向对象C++模式的程序设计知识海洋中。
教材重点特出,内容详略得当,叙述清楚,深入浅出,通过教学,能让学生以点带面,通过教学内容的学习,步入C++知识的殿堂,为铸就今后的扎实的编程能力打下良好的基础,提升专业素养。
本书作者已经出版了数部教材,其中《数据结构》(C语言版)教材两部(清华大学出版社),人民邮电出版社的《数据结构》(C++版)一部,具有丰富教材编写经验。
目前国内C++程序设计的教材影响力*大的两部是清华大学的郑莉的《C++语言程序设计》和清华大学谭浩强的《C++面向对象程序设计》,这两部教材都很经典,但各有优缺点,郑的教材深入,详细,篇章结构合理,但内容过多,繁杂,不适合一般工科院校的常规教学,同时学生自学难度大,谭的教材知识点清晰,文字描述简洁,但存在篇章组织不尽合理,部分知识点展开不够,更适合作为一本参考教材。因此,针对当前一般工科院校学习C++的实际需要,着手经典具有相当难度的面向对象编程语言C++的教学实际,我们提出秉承“学习任何复杂的事物都要从*简单的方面着手”的理念,力图编写一本入门容易,章节布局合理,内容循序渐进,有基础有拔高的教材,以便更好的适应当前和将来C++教学需求。
从当前市场需求来看,一本教材不可能适应所有学校、所有层次、不同专业的教学需求,从当前高校整体分布来看,一般层次的本科院校占了市场的相当大的比例,我们的编写教材的立足点就是从一般本科院校的教学实际需要出发,从自身教学经验出发(我们所处的也是一般本科院校层次),力图编写一本内容适用、全面,结构合理,叙述简洁,配套资源充足的本科教材,让其适应大多数一般本科院校教与学的实际需要。
第1章 绪论 1
1.1 C++简介 1
1.2 面向对象与面向过程 1
1.3 C++对面向对象的支持 2
1.4 C++的新特性 3
1.5 小结 5
习题一 6
第2章 C++程序设计基础 7
2.1 认识C++程序 7
2.1.1 C++程序实例 7
2.1.2 字符集 8
2.1.3 词法记号 8
2.1.4 VC6.0开发环境简介 9
2.2 基本数据类型和表达式 12
2.2.1 基本数据类型 12
2.2.2 常量 13
2.2.3 变量 14
2.2.4 运算符与表达式 15
2.2.5 语句 18
2.3 数据的输入与输出 19
2.3.1 基本概念 19
2.3.2 C++输入输出示例 20
2.4 基本控制结构 24
2.4.1 用if语句实现选择结构 24
2.4.2 多重选择结构 25
2.4.3 循环结构 28
2.4.4 break和continue语句 31
2.4.5 程序举例 32
2.5 自定义数据类型 33
2.5.1 typedef声明 33
2.5.2 枚举类型enum 33
2.5.3 结构体类型struct 34
2.5.4 联合体类型union 36
2.6 小结 37
习题二 37
第3章 函数 41
3.1 函数的定义与使用 41
3.1.1 函数的定义 41
3.1.2 函数的参数传递 42
3.1.3 引用参数 43
3.1.4 函数的返回值 44
3.1.5 函数调用形式 44
3.2 内联函数 47
3.3 带默认形参值的函数 48
3.4 重载函数 49
3.5 C++系统函数 51
3.6 知识扩展 53
3.6.1 递归函数执行过程 53
3.6.2 C/C++存储分配 55
3.7 小结 55
习题三 56
第4章 类与对象 57
4.1 面向对象的基本概念 57
4.1.1 抽象 57
4.1.2 封装 58
4.1.3 继承 58
4.1.4 多态 59
4.2 类和对象的定义 59
4.2.1 类的定义 59
4.2.2 对象的定义 61
4.3 构造函数和析构函数 61
4.3.1 构造函数 62
4.3.2 析构函数 63
4.3.3 拷贝构造函数 65
4.4 类的组合 67
4.4.1 组合 67
4.4.2 前向引用声明 69
4.5 知识扩展 70
4.5.1 class与struct 70
4.5.2 非public构造函数 72
4.6 小结 74
习题四 75
第5章 数据的共享与保护 76
5.1 标识符的作用域与可见性 76
5.1.1 作用域 76
5.1.2 可见性 78
5.2 对象的存储类型与生存期 79
5.3 类的静态成员 81
5.3.1 静态数据成员 82
5.3.2 静态函数成员 83
5.4 类的友元 85
5.4.1 友元函数 86
5.4.2 友元类 86
5.5 共享数据的保护 87
5.5.1 常对象 87
5.5.2 用const修饰的类成员 88
5.5.3 常引用 93
5.6 多文件结构和编译预处理命令 95
5.6.1 C++程序的一般组织结构 95
5.6.2 外部变量与外部函数 98
5.6.3 编译预处理 100
5.7 小结 104
习题五 104
第6章 数组、指针与字符串 106
6.1 数组 106
6.1.1 数组的声明与使用 106
6.1.2 数组的存储与初始化 108
6.1.3 数组作为函数的参数 109
6.1.4 对象数组 112
6.1.5 程序实例 113
6.2 指针 114
6.2.1 内存空间的访问方式 115
6.2.2 指针变量的声明 115
6.2.3 指针的赋值 116
6.2.4 指针运算 117
6.2.5 用指针处理数组元素 119
6.2.6 指针数组 123
6.2.7 用指针作为函数的参数 124
6.2.8 指针型函数 126
6.2.9 指向函数的指针 126
6.2.10 对象指针 128
6.3 动态内存分配 130
6.4 深复制与浅复制 131
6.5 字符串 133
6.5.1 用字符数组存储和处理字符串 134
6.5.2 string类 135
6.6 综合实例 137
6.7 知识扩展 138
6.7.1 指向指针的指针 138
6.7.2 指针与const限定符 139
6.8 小结 141
习题六 141
第7章 继承与派生 142
7.1 继承与派生的基本概念 142
7.2 单一继承 145
7.3 类的保护成员 148
7.4 访问权限和类型兼容规则 150
7.4.1 公有派生和类型兼容规则 152
7.4.2 保护派生 154
7.4.3 私有派生 156
7.5 多继承 156
7.6 构造函数和析构函数 157
7.7 多继承中的二义性问题 162
7.7.1 作用域分辨操作符与支配规则 163
7.7.2 虚继承与虚基类 163
7.7.3 虚基类成员的构造和析构 166
7.8 知识扩展 172
7.9 小结 173
习题七 174
第8章 多态性 176
8.1 多态性概述 176
8.2 运算符重载 176
8.2.1 运算符重载的机制 177
8.2.2 运算符重载的规则 177
8.2.3 重载为类的非成员函数(通常是友元函数) 177
8.2.4 重载为类的成员函数 180
8.2.5 其他运算符重载示例 182
8.3 虚函数 185
8.3.1 静态联编与动态联编 185
8.3.2 一般虚函数成员 187
8.3.3 虚析构函数 188
8.4 纯虚函数和抽象类 189
8.4.1 纯虚函数 189
8.4.2 抽象类 190
8.4.3 抽象类的意义 192
8.5 知识扩展 193
8.5.1 dynamic_cast安全向下转型 194
8.5.2 用typeid获取运行时类型信息 196
8.6 小结 198
习题八 198
第9章 流类库与输入/输出 200
9.1 I/O流的概念及流类库结构 200
9.1.1 I/O流的概念 200
9.1.2 流类库结构 201
9.2 输出流 202
9.2.1 插入运算符和操纵符 202
9.2.2 文件输出流 206
9.2.3 二进制输出文件 209
9.2.4 字符串输出流 210
9.3 输入流 211
9.3.1 使用提取运算符 211
9.3.2 文件输入流 211
9.3.3 输入流相关函数 211
9.3.4 字符串输入流 213
9.4 输入输出流 214
9.5 综合实例 214
9.6 知识扩展 219
9.6.1 重载输出运算符 219
9.6.2 重载输入运算符 220
9.7 小结 221
习题九 221
第10章 异常处理 223
10.1 异常处理的一个简单程序 223
10.2 异常处理机制 224
10.2.1 异常 224
10.2.2 异常处理的任务 225
10.2.3 异常处理的机制 225
10.2.4 多个catch结构 227
10.3 自定义异常类 229
10.4 C++标准异常类 230
10.5 综合实例 231
10.6 知识扩展 232
10.6.1 异常处理中的对象的构造
和析构 232
10.6.2 重抛异常 233
10.7 小结 234
习题十 234
第11章 MFC简介 236
11.1 MFC的主要特征 236
11.1.1 封装 236
11.1.2 继承 237
11.1.3 虚拟函数和动态约束 237
11.1.4 MFC的宏观框架体系 237
11.2 MFC和Win32 238
11.3 Cobject类 239
11.3.1 Cobject 类的定义 239
11.3.2 CObject类的特性 240
11.4 MFC中的消息映射 242
11.4.1 消息的分类 242
11.4.2 消息结构和消息处理 243
11.4.3 消息映射的定义 244
11.4.4 MFC消息映射的实现方法 245
11.4.5 消息映射的相关宏 245
11.4.6 消息映射声明 246
11.4.7 消息映射实现 248
11.4.8 消息映射宏 248
11.5 MFC窗口过程 250
11.5.1 MFC窗口过程的指定 250
11.5.2 对Windows消息的接收
和处理 251
11.5.3 对命令消息的接收和处理 251
11.5.4 对控制通知消息的接收
和处理 251
11.6 对象创建 251
11.6.1 对象创建与相互关系 251
11.6.2 MFC提供的接口 252
11.7 小结 253
习题十一 253
第12章 课程设计 254
12.1 C++设计模式 254
12.1.1 课程设计的目的和意义 254
12.1.2 课程设计的基本要求 254
12.1.3 课程设计的技术要点 255
12.1.4 课程设计报告的基本格式 255
12.1.5 Factory模式简介 255
12.1.6 Singleton模式 259
12.2 人事管理系统 260
12.2.1 人事管理系统设计的目的
和意义 260
12.2.2 人事管理系统设计的基本
要求 260
12.2.3 人事管理系统设计试验报告
的基本格式 261
12.2.4 人事管理系统设计技术要点 261
12.2.5 人事管理系统开发步骤简介 261
12.3 坦克大战游戏 272
12.3.1 坦克大战游戏设计的目的
和意义 272
12.3.2 坦克大战游戏设计的基本
要求 273
12.3.3 坦克大战游戏设计试验报告
的基本格式 273
12.3.4 坦克大战游戏设计的技术要点 273
参考文献 296