第1章 面向对象编程原理 1
1.1 软件危机 1
1.2 软件的发展 2
1.3 面向过程编程窥探 3
1.4 面向对象编程方案 4
1.5 面向对象编程的基本概念 5
1.6 面向对象编程的益处 9
1.7 面向对象的程序语言 9
1.8 面向对象编程的应用 11
总结 11
思考题 12
第2章 C++入门 14
2.1 何为C++ 14
2.2 C++的应用 14
2.3 一个简单的C++例子 15
2.4 更多的C++语句 18
2.5 使用类的例子 20
2.6 C++程序结构 22
2.7 创建源文件 22
2.8 编译和链接 22
总结 23
复习题 24
调试练习 24
编程练习 25
第3章 符号、表达式和控制结构 27
3.1 介绍 27
3.2 符号 27
3.3 关键词 27
3.4 标识符和常量 28
3.5 基本的数据类型 29
3.6 用户自定义数据类型 31
3.7 派生数据类型 33
3.8 符号常量 34
3.9 类型兼容性 35
3.10 变量声明 35
3.11 变量的动态初始化 36
3.12 引用变量 37
3.13 C++的操作符 38
3.14 作用域解析操作符 39
3.15 成员取值操作符 41
3.16 内存管理操作符 41
3.17 操纵器 43
3.18 类型转换操作符 45
3.19 表达式及其类型 46
3.20 特殊的赋值表达式 47
3.21 隐式转换 48
3.22 操作符重载 49
3.23 操作符优先级 50
3.24 控制结构 51
总结 54
复习题 55
调试练习 56
编程练习 58
第4章 C++中的函数 61
4.1 介绍 61
4.2 主程序 62
4.3 函数原型 62
4.4 传引用调用 64
4.5 引用返回 65
4.6 内联函数 65
4.7 默认参数 67
4.8 常量参数 69
4.9 函数重载 69
4.10 友元函数和虚函数 71
4.11 数学库函数 71
总结 72
复习题 73
调试练习 74
编程练习 75
第5章 类和对象 77
5.1 介绍 77
5.2 重温C语言的结构体 77
5.3 定义类 79
5.4 成员函数的定义 82
5.5 一个有类的C++程序 84
5.6 内联化外部定义的函数 85
5.7 成员函数的嵌套 86
5.8 私有成员函数 87
5.9 类内的数组 88
5.10 对象的内存分配 93
5.11 静态数据成员 93
5.12 静态成员函数 95
5.13 数组对象 97
5.14 作为函数参数的对象 100
5.15 友元函数 101
5.16 返回对象 107
5.17 常量成员函数 108
5.18 成员指针 108
5.19 局部类 110
总结 111
复习题 112
调试练习 112
编程练习 116
第6章 构造函数和析构函数 118
6.1 介绍 118
6.2 构造函数 118
6.3 带参构造函数 120
6.4 类的多个构造函数 122
6.5 默认参数的构造函数 125
6.6 对象的动态初始化 126
6.7 复制构造函数 128
6.8 动态创建 130
6.9 构建二维数组 132
6.10 常量对象 134
6.11 析构函数 134
总结 136
复习题 137
调试练习 137
编程练习 140
第7章 运算符重载和类型转换 142
7.1 介绍 142
7.2 定义运算符重载 142
7.3 重载一元运算符 143
7.4 重载二元运算符 145
7.5 使用友元重载二元运算符 148
7.6 使用运算符操作字符串 152
7.7 重载运算符规则 155
7.8 类型转换 156
总结 162
复习题 163
调试练习 164
编程题 166
第8章 继承:类的扩展 167
8.1 介绍 167
8.2 派生类的定义 168
8.3 单继承 169
8.4 使私有成员可以被继承 174
8.5 多级继承 176
8.6 多继承 180
8.7 层次继承 185
8.8 混合继承 186
8.9 虚基类 189
8.10 抽象类 192
8.11 派生类的构造函数 192
8.12 成员类:嵌套类 199
总结 200
复习题 200
调试练习 201
编程练习 206
第9章 指针、虚函数和多态 208
9.1 介绍 208
9.2 指针 209
9.3 对象指针 218
9.4 this指针 222
9.5 派生类的指针 225
9.6 虚函数 227
9.7 纯虚函数 232
总结 232
复习题 233
调试练习 233
编程练习 238
第10章 控制台的输入输出操作 239
10.1 介绍 239
10.2 C++的流 239
10.3 C++流类 240
10.4 非格式化的输入输出操作 241
10.5 格式化的控制台输入输出操作 247
10.6 使用操纵器操作输出 257
总结 261
复习题 262
调试练习 263
编程练习 264
第11章 文件操作 265
11.1 介绍 265
11.2 文件流操作的类 266
11.3 打开和关闭文件 267
11.4 检测文件末尾 274
11.5 open()的更多细节:文件模式 274
11.6 文件指针和它们的操纵器 275
11.7 串行的输入输出操作 277
11.8 更新文件:随机访问 282
11.9 文件操纵时的错误处理 286
11.10 命令行参数 288
总结 291
复习题 291
调试练习 292
编程练习 294
第12章 模板 295
12.1 介绍 295
12.2 类模板 295
12.3 带多个参数的类模板 300
12.4 函数模板 301
12.5 带多个参数的函数模板 306
12.6 模板函数的重载 307
12.7 成员函数模板 308
12.8 无类型模板参数 309
总结 309
复习题 310
调试练习 310
编程练习 312
第13章 异常处理 313
13.1 介绍 313
13.2 异常处理的基本概念 313
13.3 异常处理机制 314
13.4 抛出机制 318
13.5 捕捉机制 318
13.6 重新抛出异常 322
13.7 指定异常 324
总结 325
复习题 326
调试练习 326
编程练习 330
第14章 标准模板库介绍 331
14.1 介绍 331
14.2 STL的组成部分 331
14.3 容器 332
14.4 算法 334
14.5 迭代器 337
14.6 容器类的应用 338
14.7 函数对象 346
总结 347
复习题 348
调试练习 349
编程练习 351
第15章 操作字符串 352
15.1 介绍 352
15.2 创建字符串对象 353
15.3 操作字符串 355
15.4 关系操作 356
15.5 字符串属性 357
15.6 访问字符串中的字符 359
15.7 比较和交换 360
总结 362
复习题 363
调试练习 364
编程练习 366
第16章 标准C++的新特性 368
16.1 介绍 368
16.2 新的数据类型 368
16.3 新的操作符 370
16.4 类实现 372
16.5 名称空间域 374
16.6 操作符关键词 380
16.7 新的关键词 380
16.8 新的头文件 381
总结 382
复习题 382
调试练习 383
编程练习 386
第17章 面向对象系统的开发 387
17.1 介绍 387
17.2 面向过程的方案 388
17.3 面向过程的开发工具 389
17.4 面向对象方法 390
17.5 面向对象的符号和图示 392
17.6 面向对象分析的步骤 394
17.7 面向对象设计的步骤 397
17.8 实现 401
17.9 原型化方法 401
17.10 向上包装 402
总结 403
复习题 404
附录A 项目程序 405
A.1 小型项目1:基于菜单的计算系统 405
A.2 主要项目1:银行系统 417
附录B 使用Turbo C++ 446
B.1 介绍 446
B.2 程序的执行和创建 446
B.3 Turbo C++ 447
B.4 IDE的界面 448
B.5 启动Turbo C++ 449
B.6 创建源代码文件 449
B.7 编译程序 451
B.8 链接 452
B.9 运行程序 452
B.10 处理错误 453
B.11 处理存在的文件 454
B.12 一些快捷键 454
附录C Windows环境下执行C++ 456
C.1 介绍 456
C.2 可视化工作台 456
C.3 执行Visual C++程序 459
C.4 创建源代码文件 459
C.5 编译和链接 461
C.6 运行程序 462
C.7 处理错误 463
C.8 其他功能 463
附录D 标准C++的关键词列表 464
附录E C++运算符的优先级 470
附录F C++和面向对象编程重要术语表 473
附录G C++自测 485
A部分 485
B部分 488
C部分 491
D部分 502
参考文献 514