第一部分 C++程序设计语言基础第1章 C++简介 1
1.1 C++语言概述 1
1.1.1 计算机语言概述 1
1.1.2 C++语言的发展 2
1.1.3 C++的特点 2
1.2 简单的C++程序体验 3
1.2.1 C++程序的组成 3
1.2.2 C++程序的书写格式 5
1.3 C++程序的编辑、编译、连接和运行 6
1.4 练习 10
第2章 数据类型和表达式 11
2.1 数据类型概述 11
2.2 C++基本数据类型 12
2.3 常量和变量 13
2.3.1 常量 13
2.3.2 变量 16
2.4 运算符 18
2.4.1 算术运算符 18
2.4.2 赋值运算符 19
2.4.3 关系运算符 20
2.4.4 逻辑运算符 21
2.4.5 位运算符 22
2.4.6 自增和自减运算符 24
2.4.7 条件运算符 25
2.4.8 逗号运算符 25
2.5 表达式中运算符的优先级 26
2.6 表达式中数据类型的转换 27
2.6.1 何时发生数据类型转换 27
2.6.2 隐式转换 27
2.6.3 显式转换 28
2.7 练习 29
第3章 程序控制语句 30
3.1 条件语句 30
3.1.1 条件语句的标准形式 30
3.1.2 嵌套条件语句及其优化 33
3.1.3 switch语句 36
3.2 循环语句 41
3.2.1 while循环 42
3.2.2 do-while循环 42
3.2.3 for循环 43
3.2.4 嵌套循环 46
3.3 转移语句 46
3.3.1 break语句 47
3.3.2 continue语句 48
3.3.3 goto语句 49
3.4 应用实例 50
3.5 练习 52
第4章 标准库类型 55
4.1 标准库的组织结构 55
4.2 命名空间 56
4.3 标准库的string类型 59
4.3.1 string对象的定义和初始化 59
4.3.2 string对象的操作 60
4.4 标准库的vector类型 62
4.4.1 vector对象的定义和初始化 63
4.4.2 vector的操作 63
4.5 应用实例 64
4.6 练习 69
第5章 数组、指针与结构体 70
5.1 数组 70
5.1.1 数组的声明和初始化 71
5.1.2 引用数组元素 74
5.1.3 字符数组 77
5.2 结构体 78
5.2.1 结构体类型的定义 78
5.2.2 结构体变量的声明和引用 79
5.2.3 结构体数组 81
5.3 指针 84
5.3.1 什么是指针 84
5.3.2 指针变量的声明和初始化 85
5.3.3 指针操作 87
5.3.4 指针和数组 88
5.3.5 sizeof运算符 90
5.3.6 结构体指针变量 90
5.3.7 动态分配/释放内存 91
5.3.8 const指针 93
5.4 引用 94
5.5 应用实例 94
5.6 练习 96
第6章 函数 98
6.1 函数概述 98
6.1.1 函数定义 99
6.1.2 函数的声明 100
6.1.3 函数的调用 101
6.1.4 函数的默认参数值 103
6.2 参数传递和返回值 104
6.2.1 指针作函数的参数和返回值 104
6.2.2 引用作函数参数和返回值 107
6.2.3 数组形参 108
6.2.4 vector形参 111
6.3 变量的作用域和存储类型 112
6.3.1 变量的作用域 112
6.3.2 变量的存储类型 115
6.4 内联函数 118
6.5 重载函数 119
6.6 应用实例 121
6.7 练习 127
第7章 输入/输出流 129
7.1 IO类型的标准库 129
7.2 标准输入/输出 130
7.2.1 标准输出 130
7.2.2 标准输入 131
7.3 文件的输入与输出 133
7.3.1 文件的打开与关闭 133
7.3.2 文件的读/写 135
7.3.3 二进制文件的读/写 136
7.4 字符串流 137
7.5 应用实例 139
7.6 练习 139
第8章 异常处理和预编译 140
8.1 异常处理 140
8.1.1 异常概述 140
8.1.2 异常处理机制 141
8.2 编译预处理 143
8.2.1 宏定义 143
8.2.2 文件包含 144
8.2.3 条件编译 145
8.3 应用实例 147
8.4 练习 149
第二部分 面向对象编程 150
第9章 类 150
9.1 类的概述 150
9.1.1 类定义 151
9.1.2 数据抽象和封装 154
9.1.3 访问标号 155
9.1.4 类对象 158
9.1.5 this指针 159
9.2 构造函数和析构函数 160
9.2.1 构造函数 160
9.2.2 带有成员初始化表的构造函数 161
9.2.3 析构函数 163
9.3 友元 165
9.3.1 为什么要引入友元 165
9.3.2 友元函数 166
9.3.3 友元类 167
9.4 静态成员 168
9.4.1 静态数据成员 169
9.4.2 静态成员函数 170
9.5 类作用域 172
9.6 应用实例 172
9.7 练习 177
第10章 类的进一步学习 179
10.1 inline成员函数 179
10.2 类对象数组 180
10.3 const型数据 182
10.3.1 const对象(常对象) 182
10.3.2 const成员函数(常成员函数) 182
10.3.3 指向对象的常指针 184
10.4 复制构造函数 184
10.4.1 定义形式 185
10.4.2 合成的复制构造函数 185
10.4.3 为什么需要复制构造函数 186
10.4.4 自定义复制构造函数 187
10.5 运算符重载 188
10.5.1 重载运算符的定义 188
10.5.2 重载运算符的注意事项 190
10.6 异常类 193
10.6.1 标准库异常类 193
10.6.2 用户自定义异常类 193
10.7 应用实例 195
10.8 练习 200
第11章 类的派生与继承 202
11.1 概述 202
11.2 类的继承与派生 203
11.2.1 定义基类 204
11.2.2 定义派生类 204
1 1.3 继承方式与访问控制 208
11.3.1 公有派生 208
11.3.2 私有派生 211
11.3.3 保护派生 212
11.4 基类与派生类的构造函数和析构函数 215
11.4.1 派生类的构造函数 215
11.4.2 派生类的析构函数 219
11.5 基类与派生类的关系 219
11.5.1 基类与派生类定义的成员的优先关系 219
11.5.2 类型兼容 220
11.6 多继承 223
11.6.1 多继承的定义 223
11.6.2 多继承的构造与析构函数 226
11.6.3 多继承的歧义性与解决方法 227
11.7 虚基类 230
11.8 应用实例 235
11.9 练习 238
第12章 多态性和虚函数 240
12.1 多态 240
12.1.1 静态多态性 241
12.2.2 动态多态性 243
12.2 虚函数 243
12.2.1 虚函数的定义和使用规则 243
12.2.2 虚函数的特征 245
12.2.3 虚析构函数 247
12.3 纯虚函数和抽象类 248
12.3.1 纯虚函数 248
12.3.2 抽象类 249
12.4 应用实例 250
12.5 练习 257
第三部分 案例开发 259
第13章 项目实例 259
13.1 Visual Studio开发环境简介 259
13.2 核心功能与原型设计 260
13.2.1 核心功能分析 261
13.2.2 原型设计 261
13.2.3 原型分析 272
13.3 MFC 272
13.3.1 MFC简介 272
13.3.2 文件结构 274
13.4 建立数据库连接 276
13.4.1 ODBC简介 277
13.4.2 建立数据库 278
13.4.3 MFC ODBC数据库类 279
13.4.4 优化程序——建立数据库连接 283
13.5 设计友好的用户界面 289
13.5.1 界面 290
13.5.2 优化程序——设计界面 291
13.6 程序功能分析 295
13.7 小结 295
附录 参考答案 296
参考文献 323