第1章 面向对象程序设计概述 1
1.1 什么是面向对象程序设计 1
1.1.1 程序设计范型 1
1.1.2 面向对象程序设计的基本概念 2
1.1.3 面向对象程序设计的基本特征 3
1.2 为什么要使用面向对象程序设计 4
1.2.1 传统程序设计方法的局限性 4
1.2.2 面向对象程序设计方法的主要优点 5
1.3 面向对象程序设计发展简史 6
1.4 Visual C++6.0开发环境 7
1.4.1 Visual C++6.0的菜单栏 8
1.4.2 Visual C++6.0的工具栏 12
1.4.3 项目与项目工作区 13
1.4.4 资源与资源编辑器 16
1.4.5 联机帮助 17
1.5 小结 18
习题 19
第2章 C++概述 20
2.1 C++语言的特点 20
2.2 C++程序的构成 20
2.2.1 C++程序的基本组成 21
2.2.2 C++程序的结构特性 23
2.3 C++源程序的实现 24
2.3.1 编辑源程序 24
2.3.2 编译与链接源程序 26
2.3.3 运行源程序 27
2.4 数据类型 28
2.4.1 基本数据类型 28
2.4.2 常量 29
2.4.3 变量 34
2.5 函数 39
2.5.1 函数的定义和调用 39
2.5.2 函数原型 43
2.5.3 带有默认参数的函数 44
2.5.4 函数的参数传递 45
2.5.5 内联函数 48
2.5.6 函数的重载 49
2.6 构造类型 51
2.6.1 数组 51
2.6.2 结构体 56
2.6.3 共用体 60
2.6.4 枚举类型 61
2.7 指针和引用 63
2.7.1 指针 63
2.7.2 引用 72
2.8 其他若干C++的重要特性 78
2.8.1 C++的输入输出 78
2.8.2 自定义类型 80
2.8.3 作用域运算符 81
2.8.4 强制类型转换 82
2.8.5 运算符new和delete 84
2.9 小结 87
习题 89
第3章 类和对象 95
3.1 类 95
3.1.1 从结构体到类 95
3.1.2 类的声明和定义 96
3.1.3 类成员的访问控制 97
3.1.4 类的成员函数 98
3.1.5 对象 100
3.1.6 类的作用域和类成员的访问属性 101
3.2 构造函数和析构函数 102
3.2.1 构造函数 102
3.2.2 构造函数的重载 105
3.2.3 带默认参数的构造函数 109
3.2.4 拷贝构造函数 111
3.2.5 析构函数 116
3.3 向函数传递对象 118
3.3.1 使用对象作为函数参数 118
3.3.2 使用对象指针作为函数参数 119
3.3.3 使用对象引用作为函数参数 120
3.4 自引用指针this 121
3.5 对象数组与对象指针 123
3.5.1 对象数组 123
3.5.2 对象指针 126
3.6 静态成员与友元 128
3.6.1 静态数据成员 128
3.6.2 静态成员函数 133
3.7 友元类和友元方法 137
3.8 类的组合 139
3.9 定义和使用命名空间 142
3.10 常类型 147
3.10.1 常对象 147
3.10.2 常对象成员 148
3.11 小结 151
习题 151
第4章 继承与派生 158
4.1 继承与派生的概念 158
4.2 派生类的声明 160
4.3 定义基类和派生类 161
4.3.1 定义基类 161
4.3.2 定义派生类 161
4.3.3 基类成员在派生类中的访问属性 163
4.3.4 派生类对基类成员的访问规则 164
4.4 派生类的构造函数和析构函数 170
4.4.1 派生类构造函数和析构函数的执行顺序 170
4.4.2 派生类构造函数和析构函数的构造规则 172
4.5 调整基类成员在派生类中的访问属性的其他方法 176
4.5.1 子类隐藏父类的成员函数 176
4.5.2 在派生类中显式访问基类成员 179
4.6 多重继承 181
4.6.1 多重继承派生类的声明 181
4.6.2 多重继承派生类的构造函数与析构函数 185
4.7 虚基类 188
4.7.1 虚基类的作用 188
4.7.2 虚基类的声明 190
4.7.3 虚基类的初始化 191
4.8 应用举例 193
4.9 小结 195
习题 196
第5章 多态性 204
5.1 多态性概述 204
5.1.1 问题的提出 204
5.1.2 系统联编 205
5.2 函数重载 206
5.2.1 重载函数的定义 206
5.2.2 重载函数的调用 207
5.3 运算符重载 208
5.3.1 运算符重载概述 209
5.3.2 运算符重载的方式 209
5.3.3 运算符重载函数的定义和调用 210
5.3.4 重载运算符综合举例 217
5.4 虚函数与抽象类 222
5.4.1 虚函数的定义与调用 223
5.4.2 纯虚函数和抽象类 226
5.4.3 虚函数的应用 228
5.5 类型转换 231
5.5.1 基本类型到类类型的转换 232
5.5.2 类类型到基本类型的转换 234
5.5.3 类类型到类类型的转换 235
5.6 小结 236
习题 237
第6章 模板与异常处理 244
6.1 模板概述 244
6.2 函数模板 245
6.2.1 函数模板的定义 246
6.2.2 模板函数 247
6.2.3 函数模板的重载 253
6.3 类模板 255
6.3.1 类模板的定义 255
6.3.2 模板类 257
6.3.3 类模板的继承与派生 260
6.4 异常处理 267
6.4.1 概述 267
6.4.2 异常处理的实现 268
6.5 小结 271
习题 272
第7章 C++的输入与输出 276
7.1 流概述 276
7.1.1 流 277
7.1.2 C++输入输出流类库 278
7.2 数据的输入和输出 278
7.2.1 标准流对象 279
7.2.2 格式控制 280
7.2.3 用户自定义的I/O流 286
7.3 文件的输入和输出 288
7.3.1 文件流 288
7.3.2 文件输出流 289
7.3.3 文件输入流 292
7.4 综合举例 296
7.5 小结 300
习题 300
第8章 ODBC与数据库编程 304
8.1 概述 304
8.2 MFC ODBC连接数据库 305
8.2.1 ODBC的构成 305
8.2.2 ODBC数据源的创建 306
8.2.3 MFC ODBC类 308
8.2.4 运行AppWizard生成工程 311
8.2.5 创建数据库应用程序 314
8.3 实现数据库基本操作 318
8.3.1 添加记录 318
8.3.2 删除记录 319
8.3.3 查询记录 321
8.4 MFC DAO连接数据库 324
8.5 小结 325
习题 325
第9章 课程设计实例与分析 326
9.1 任务描述 326
9.1.1 题目简介 326
9.1.2 设计任务 326
9.1.3 设计要求 327
9.2 开发背景 327
9.3 需求分析 328
9.3.1 分析系统需求 328
9.3.2 系统需求分析 328
9.3.3 可行性分析 328
9.4 总体设计 329
9.4.1 系统功能模块图 329
9.4.2 系统类库设计 330
9.4.3 数据库设计 330
9.5 详细设计 337
9.5.1 登录模块设计 337
9.5.2 系统界面设计 339
9.5.3 学生信息管理模块设计 341
9.5.4 其他信息管理模块设计 344
9.5.5 系统管理模块设计 345
9.6 系统测试 350
9.6.1 测试方法 350
9.6.2 测试用例 351
9.6.3 测试分析 352
9.7 软件使用说明书 352
9.8 小结 353
9.9 课程设计练习题目 353
参考文献 355