第1章 概述 1
1.1 面向对象程序设计诞生的原因 1
1.2 面向对象语言的特征 5
1.3 C++和C 9
1.4 基础知识 10
1.5 统一建模语言(UML) 10
1.6 本章摘要 11
1.7 思考题 12
第2章 C++编程基础 14
2.1 准备开始 14
2.2 基本程序结构 15
2.3 使用cout输出 17
2.4 指令 18
2.5 注释 19
2.6 整数变量 20
2.7 字符变量 24
2.8 使用cin输入 26
2.9 浮点数类型 28
2.10 bool类型 30
2.11 setw操作符 31
2.12 变量类型总结 33
2.13 类型转换 34
2.14 算术运算符 38
2.15 库函数 41
2.16 本章摘要 44
2.17 思考题 44
2.18 练习 46
第3章 循环和选择 48
3.1 关系运算符 48
3.2 循环 50
3.3 选择 61
3.4 逻辑运算符 77
3.5 优先级总结 80
3.6 其他控制语句 81
3.7 本章摘要 84
3.8 思考题 85
3.9 练习 86
第4章 结构 89
4.1 结构 89
4.2 枚举 101
4.3 本章摘要 107
4.4 思考题 107
4.5 练习 108
第5章 函数 111
5.1 简单的函数 112
5.2 向函数传递参数 115
5.3 从函数返回值 122
5.4 引用参数 127
5.5 重载函数 132
5.6 递归 135
5.7 内联函数 137
5.8 默认参数 138
5.9 域解析运算符和存储类 140
5.10 通过引用返回 144
5.11 常量类型的函数参数 146
5.12 本章摘要 147
5.13 思考题 147
5.14 练习 149
第6章 对象和类 151
6.1 简单的类 151
6.2 作为现实对象的C++对象 157
6.3 作为数据类型的C++对象 159
6.4 构造函数 160
6.5 作为函数参数的对象 164
6.6 默认拷贝构造函数 168
6.7 函数返回对象 170
6.8 纸牌游戏的例子 172
6.9 结构和类 175
6.10 类、对象和内存 176
6.11 静态类成员数据 177
6.12 const和类 179
6.13 类和对象的意义 182
6.14 本章摘要 183
6.15 思考题 183
6.16 练习 185
第7章 数组和字符串 188
7.1 数组基础 188
7.2 作为类成员数据的数组 200
7.3 对象数组 203
7.4 C字符串 208
7.5 标准的C++ string类 218
7.6 本章摘要 225
7.7 思考题 225
7.8 练习 227
第8章 运算符重载 230
8.1 重载一元运算符 231
8.2 重载二元运算符 237
8.3 数据转换 249
8.4 UML类图 260
8.5 运算符重载与转换中的陷阱 261
8.6 关键字explicit和mutable 262
8.7 本章摘要 265
8.8 思考题 265
8.9 练习 267
第9章 继承 270
9.1 派生类和基类 271
9.2 派生类构造函数 276
9.3 重载成员函数 278
9.4 使用了哪个函数 279
9.5 英制Distance类中的继承 280
9.6 类的层次 283
9.7 继承与图形 286
9.8 公共的和私有的继承 289
9.9 继承的级别 291
9.10 多重继承 294
9.11 EMPMULT中的private派生 299
9.12 多重继承的多义性 302
9.13 聚合关系:类内部的类 304
9.14 继承和程序开发 308
9.15 本章摘要 309
9.16 思考题 309
9.17 练习 311
第10章 指针 314
10.1 地址和指针 315
10.2 取地址运算符& 315
10.3 指针和数组 322
10.4 指针和函数 325
10.5 指针和C类型字符串 331
10.6 内存管理:new和delete 336
10.7 对象指针 340
10.8 链表实例 344
10.9 指向指针的指针 348
10.10 解析算术表达式实例 352
10.11 模拟赛马 356
10.12 UML状态图 361
10.13 调试指针 362
10.14 本章摘要 363
10.15 思考题 363
10.16 练习 366
第11章 虚函数 370
11.1 虚函数 370
11.2 友元函数 383
11.3 静态函数 390
11.4 赋值和拷贝初始化 392
11.5 this指针 403
11.6 动态类型信息 409
11.7 本章摘要 412
11.8 思考题 413
11.9 练习 415
第12章 流和文件 420
12.1 流类 420
12.2 流的错误 427
12.3 使用流的磁盘文件I/O 432
12.4 文件指针 443
12.5 文件I/O的错误处理 446
12.6 使用成员函数的文件I/O 448
12.7 插入和析取运算符的重载 458
12.8 内存作为流对象 462
12.9 命令行参数 463
12.10 打印机输出 465
12.11 本章摘要 466
12.12 思考题 467
12.13 练习 468
第13章 多文件程序 471
13.1 使用多文件程序的动机 471
13.2 多文件程序的创建 473
13.3 文件间的通信 474
13.4 超长数值类 484
13.5 高楼电梯模拟 489
13.6 本章摘要 503
13.7 思考题 503
13.8 项目 505
第14章 模板和异常 506
14.1 函数模板 506
14.2 类模板 512
14.3 异常 522
14.4 本章摘要 535
14.5 思考题 535
14.6 练习 537
第15章 标准模板库 539
15.1 STL简介 539
15.2 算法 545
15.3 顺序容器 552
15.4 迭代器 559
15.5 特殊迭代器 567
15.6 关联容器 573
15.7 存储用户自定义对象 579
15.8 函数对象 585
15.9 本章摘要 592
15.10 思考题 592
15.11 练习 594
第16章 面向对象软件开发 596
16.1 软件开发过程的演变 596
16.2 Use Case建模 598
16.3 程序设计的问题 601
16.4 程序LANDLORD的细化阶段 603
16.5 从Use Case到类 606
16.6 编写代码 612
16.7 程序的交互 626
16.8 最终想法 628
16.9 本章摘要 628
16.10 思考题 628
16.11 项目 630
附录A ASCII表 631
附录B C++优先级表和关键字 639
B.1 优先级表 639
B.2 关键字 639
附录C Microsoft Visual C++ 642
C.1 屏幕元素 642
C.2 单文件程序 642
C.3 多文件程序 644
C.4 创建简单控制台图形程序 645
C.5 调试 645
附录D Borland C++ Builder 647
D.1 在C++ Builder中运行程序 647
D.2 清除屏幕 648
D.3 新建项目 648
D.4 命名和保存项目 649
D.5 由现有文件开始 649
D.6 编译、链接和执行 650
D.7 将源头文件添加到项目中 650
D.8 多文件项目 651
D.9 简单控制台图形程序 652
D.10 调试 652
附录E 简单控制台图形 654
E.1 使用简单控制台图形程序 654
E.2 简单控制台图形函数 655
E.3 简单控制台图形函数的实现 656
E.4 程序清单列表 657
附录F STL算法和成员函数 665
F.1 算法 665
F.2 成员函数 671
F.3 迭代器 672
附录G 思考题和练习解答 675
G.1 第1章 675
G.2 第2章 676
G.3 第3章 678
G.4 第4章 681
G.5 第5章 684
G.6 第6章 688
G.7 第7章 691
G.8 第8章 695
G.9 第9章 700
G.10 第10章 705
G.11 第11章 710
G.12 第12章 715
G.13 第13章 718
G.14 第14章 718
G.15 第15章 723
G.16 第16章 727
附录H 参考书目 729
H.1 高级C++ 729
H.2 定义文档 729
H.3 统一建模语言(UML) 730
H.4 C++的历史 730
H.5 其他主题 730