第1章 程序设计引论 1
1.1 程序与计算机 1
1.1.1 计算机与指令 1
1.1.2 存储程序与运行程序 5
1.2 程序设计 6
1.2.1 程序设计语言 7
1.2.2 程序设计方法概述 10
1.3 面向对象程序设计 12
1.3.1 面向对象程序设计的基本思想 12
1.3.2 面向对象的抽象原理 13
1.3.3 基本概念 15
1.4.1 面向对象程序设计语言的特征 18
1.4 面向对象程序设计语言 18
1.4.2 面向对象程序设计的几种常用语言 19
习题 21
第2章 C++程序设计语言基础 22
2.1 C++的基本语言成分 22
2.1.1 数据类型 22
2.1.2 变量的声明与赋值 24
2.1.3 常量 25
2.1.4 表达式与运算符 28
2.1.5 基本数据类型的转换 29
2.2 C++的基本程序结构 31
2.2.1 C++语言的程序语句 31
2.2.2 顺序结构 32
2.2.3 分支结构 32
2.2.4 循环结构 33
2.2.5 其他控制执行顺序的机制 35
2.3 C++语言的进一步讨论 37
2.3.1 一个C++程序的例子 37
2.3.2 C++中的变量 38
2.3.3 输入输出 40
2.3.4 引用 41
2.3.5 函数 41
2.4 上机指导 46
2.4.1 Visual C++6.0界面 46
2.4.2 生成一个空的Console Application(控制台程序) 47
2.4.3 向工程中添加文件 48
2.4.4 Workspace窗口的结构 49
2.4.5 运行程序 50
习题 51
第3章 类与简单对象 53
3.1 类的定义 53
3.1.1 定义类 53
3.1.2 class与struct的区别 54
3.2 类的实现 55
3.3 类的使用——对象 56
3.3.1 对象的声明和使用 56
3.3.2 this指针 56
3.4 构造函数和析构函数 57
3.4.1 构造函数 57
3.4.2 析构函数 62
3.4.3 构造对象的顺序 63
3.4.4 一些破坏类的数据隐藏的用法 63
3.5.1 声明与定义 64
3.5 上机指导 64
3.5.2 部分实现 65
3.5.3 测试 66
习题 66
第4章 复杂对象 68
4.1 对象指针 68
4.1.1 指针定义格式 68
4.1.2 对象指针 69
4.1.3 this指针 72
4.2 对象数组与对象指针数组 75
4.2.1 数组的定义格式 75
4.2.2 对象数组 76
4.2.3 对象指针数组 77
4.3 对象引用 78
4.3.1 引用的定义格式 79
4.3.2 引用的用途 79
4.3.3 对象引用 82
4.4 子对象和堆对象 83
4.4.1 子对象 83
4.4.2 堆对象 86
4.5 上机指导 90
4.5.1 定义类 90
4.5.2 类实现 91
4.5.3 测试 92
4.5.4 比较对象指针与对象引用 92
习题 94
5.1 基类和派生类 96
5.1.1 继承和派生的基本概念 96
第5章 继承和派生类 96
5.1.2 继承的种类 97
5.2 单继承 97
5.2.1 单继承的定义格式 97
5.2.2 基类成员在派生类中的访问权限 99
5.2.3 公有派生和赋值兼容规则 104
5.3 多继承 105
5.3.1 多继承的定义格式 105
5.3.2 二义性和支配规则 106
5.3.3 虚基类 111
5.4 继承机制下构造函数与析构函数的调用顺序 112
5.4.1 继承机制下构造函数的调用顺序 112
5.4.2 派生类构造函数的规则 116
5.4.3 继承机制下析构函数的调用顺序 120
5.5.1 保护成员的作用 122
5.5 上机指导 122
5.5.2 私有继承 123
习题 124
第6章 数据成员的进一步使用 126
6.1 静态成员 126
6.1.1 静态数据成员 126
6.1.2 静态成员函数 129
6.2 友元 130
6.2.1 友元的作用 130
6.2.2 友元函数 132
6.2.3 友元类 136
6.3 类型转换与转换函数 136
6.3.1 类型的隐含转换 136
6.3.2 构造函数的类型转换功能 137
6.4 上机指导 139
6.3.3 转换函数 139
6.4.1 定义类 140
6.4.2 类实现 140
6.4.3 测试 141
习题 141
第7章 多态性和虚函数 144
7.1 静态联编与动态联编 144
7.1.1 静态联编 144
7.1.2 动态联编 145
7.2 虚函数 146
7.2.1 虚函数的定义与使用 146
7.2.2 多重继承和虚函数 149
7.2.3 在类的成员函数中调用虚函数 153
7.3.1 纯虚函数 156
7.3 纯虚函数和抽象类 156
7.3.2 抽象类 157
7.4 纯析构函数 158
7.5 上机指导 159
7.5.1 定义类 159
7.5.2 实现 160
7.5.3 测试 161
习题 161
第8章 运算符重载 165
8.1 概述 165
8.1.1 运算符重载的规则 165
8.1.2 编译程序选择重载运算符的规则 166
8.2 运算符重载的形式 166
8.2.1 用成员函数重载运算符 166
8.2.2 用友员函数重载运算符 168
8.2.3 两种运算符重载形式的比较 170
8.3 赋值运算符重载 171
8.3.1 重载赋值运算符的时机 171
8.3.2 重载赋值运算符的格式 172
8.3.3 重载赋值运算符函数的返回值 174
8.3.4 赋值运算符重载函数与复制构造函数的区别 174
8.4 几个典型运算符重载 176
8.4.1 ++和--运算符 176
8.4.2 []运算符 180
8.4.3 ()运算符 182
8.5 上机指导 185
8.5.1 类的定义与实现 185
8.5.2 测试 187
8.5.3 运行结果 188
习题 189
第9章 模板 191
9.1 模板的概念 191
9.2 函数模板 192
9.2.1 函数模板说明 192
9.2.2 使用函数模板 193
9.3 类模板 193
9.3.1 类模板说明 193
9.3.2 使用类模板 194
9.4 上机指导 195
9.4.1 定义类 195
9.4.2 类实现 196
9.4.3 测试 197
习题 198
10.2 标准流和流操作 200
第10章 I/O流类库 200
10.1 流类和流对象 200
10.2.1 使用cin进行输入 201
10.2.2 使用cout进行输出 202
10.3 格式操作 202
10.4 重载提取符和插入符 205
10.5 流的出错处理 205
10.6 文件流操作 206
10.6.1 文件流及其相关的类 206
10.6.2 文件的流操作 206
10.7 上机指导 208
10.7.1 定义类 208
10.7.2 类实现 209
10.7.3 测试 211
习题 212
第11章 异常处理 215
11.1 概述 215
11.2 异常接口规范声明 217
11.3 上机指导 219
习题 220
第12章 设计模式示例 222
12.1 Observer模式 222
12.1.1 设计模式 222
12.1.2 Observer模式 224
12.2 Observer模式的实现 227
12.2.1 Observer模式中的类 227
12.2.2 Observer模式的序列图 227
12.2.3 关于实现的讨论 228
12.3 示例代码 231
12.3.1 接口的定义 232
12.3.2 具体的目标类 233
12.3.3 具体的观察者类 233
12.4 上机指导 235
习题 235
第13章 面向对象软件开发方法 236
13.1 面向对象开发方法简介 236
13.1.1 面向对象的Coad方法 237
13.1.2 面向对象的OMT方法 239
13.1.3 UML与RUP 241
13.2 面向对象技术中的常用建模图形工具 244
13.2.1 类图 244
13.2.2 在类图中表示关系 246
13.2.3 状态图 249
13.2.4 序列图 250
13.2.5 用例图 250
13.3 面向对象分析 252
13.3.1 面向对象分析的目的和任务 253
13.3.2 面向对象分析过程 254
13.4 面向对象设计 259
13.4.1 面向对象的系统设计 260
13.4.2 对象设计 263
13.5 实现 265
13.5.1 程序设计风格 265
13.5.2 编码标准 267
习题 268
附录 C++关键字 269
参考文献 272