目录 1
第1章 计算机和C++编程概述 1
1.1 简介 1
1.2 计算机是什么 2
1.3 计算机的构成 3
1.4 操作系统的演进 4
1.5 个人计算、分布式计算和客户机/服务器计算 4
1.6 机器语言、汇编语言和高级语言 5
1.7 C和C++发展简史 6
1.8 C++标准库 7
1.9 Java 8
1.10 Visual Basic、Visual C++和C# 9
1.11 其他高级语言 10
1.12 结构化编程 10
1.13 关键的软件趋势:对象技术 11
1.14 一个典型的C++环境基础 12
1.15 硬件发展趋势 14
1.16 因特网发展简史 15
1.17 万维网发展简史 16
1.18 万维网协会(W3C) 16
1.19 C++和本书的基本注意事项 17
1.21 一个简单的程序:打印一行文字 18
1.20 C++编程简述 18
1.22 另一个简单程序:两个整数相加 22
1.23 内存概念 25
1.24 算术运算 26
1.25 判断:相等运算符和关系运算符 29
1.26 对象思想:对象技术及UML简介 32
1.27 本书导读 36
1.28 本章小结 46
第2章 控制结构 56
2.1 简介 56
2.2 算法 56
2.4 控制结构 57
2.3 伪代码 57
2.5 if选择结构 60
2.6 if/else选择结构 61
2.7 while循环结构 64
2.8 算法设计:案例分析1(计数器控制循环) 66
2.9 用自顶向下逐步求精法描述算法:案例分析2(标记控制的循环) 69
2.10 用自顶向下逐步求精法描述算法:案例分析3(嵌套控制结构) 75
2.11 赋值运算符 79
2.12 自增和自减运算符 80
2.13 计数器控制的循环的本质 82
2.14 for循环结构 83
2.15 for结构用法示例 87
2.16 switch多选结构 91
2.17 do/while循环结构 96
2.18 break和continue语句 97
2.19 逻辑运算符 99
2.20 混淆相等运算符(==)和赋值运算符(=) 102
2.21 结构化编程小结 103
2.22 【可选案例分析】对象思想:确定问题所涉及的类 106
2.23 本章小结 117
3.1 简介 133
3.2 C++程序组件 133
第3章 函数 133
3.3 数学库函数 134
3.4 函数 135
3.5 函数定义 136
3.6 函数原型 139
3.7 头文件 142
3.8 随机数产生器 142
3.9 示例:博彩游戏和enum简介 147
3.10 存储类 150
3.11 作用域规则 152
3.12 递归 155
3.13 递归应用示例:Fibonacci数列 157
3.14 递归与迭代 160
3.15 使用空参数列表的函数 162
3.16 内联函数 163
3.17 引用与引用参数 164
3.18 默认实参 168
3.19 一元作用域解析符 169
3.20 函数重载 171
3.21 函数模板 173
3.22 【选学案例分析】对象思想:确定类的属性 176
3.23 本章小结 181
4.2 数组 196
4.1 简介 196
第4章 数组 196
4.3 数组声明 198
4.4 数组用法示例 198
4.5 将数组传给函数 211
4.6 数组排序 215
4.7 案例研究:利用数组计算平均数、中位数和众数 216
4.8 查找数组:线性查找和折半查找 221
4.9 多下标数组 225
4.10 【选学案例分析】对象思想:确定类的操作 231
4.11 本章小结 237
5.2 指针变量的声明和初始化 248
第5章 指针和字符串 248
5.1 简介 248
5.3 指针运算符 249
5.4 按引用调用函数 251
5.5 使用带指针的const限定符 255
5.6 用按引用传递实现的冒泡排序 260
5.7 指针表达式和指针算法 264
5.8 指针和数组的关系 266
5.9 指针数组 270
5.10 案例分析:洗牌和发牌模拟程序 271
5.11 函数指针 275
5.12 字符和字符串处理概述 279
5.13 【选学案例分析】对象思想:对象间的交互 287
5.14 小结 294
第6章 类和数据抽象(一) 312
6.1 简介 312
6.2 结构定义 313
6.3 访问结构成员 314
6.4 用struct实现用户自定义类型Time 314
6.5 用class实现Time抽象数据类型 316
6.6 类作用域和访问类成员 321
6.7 接口同实现方法的分离 323
6.8 控制对成员的访问 327
6.9 访问函数和工具函数 328
6.10 初始化类对象:构造函数 331
6.11 在构造函数中使用默认参数 331
6.12 使用析构函数 335
6.13 何时调用构造函数和析构函数 335
6.14 使用设置函数和获取函数 338
6.15 微妙的陷阱:返回对private数据成员的引用 343
6.16 默认逐个成员赋值 346
6.17 软件重用性 347
6.18 【选学案例分析】对象思想:编写电梯模拟程序的类 348
6.19 本章小结 357
第7章 类和数据抽象(二) 361
7.1 简介 361
7.2 const对象和const成员函数 361
7.3 合成:对象作为类成员 368
7.4 友元函数和友元类 374
7.5 使用this指针 376
7.6 用new和delete实现动态内存分配 382
7.7 静态类成员 383
7.8 数据抽象与信息隐藏 387
7.9 容器类和迭代器 389
7.10 代理类 390
7.11 【可选案例分析】对象思想:设计电梯模拟程序中的类 392
7.12 本章小结 418
第8章 运算符重载:字符串和数组对象 422
8.1 简介 422
8.2 运算符重载的基础知识 422
8.3 运算符重载的限制条件 423
8.4 用作类成员函数和友元函数的运算符函数 424
8.5 重载流插入与流读取运算符 425
8.6 重载一元运算符 428
8.7 重载二元运算符 428
8.8 案例分析:Array类 429
8.9 类型转换 438
8.10 案例分析:String类 439
8.11 重载++和-- 449
8.12 案例分析:Date类 450
8.13 标准库类string和vector 454
8.14 本章小结 462
第9章 面向对象程序设计:继承 472
9.1 简介 472
9.2 基类与派生类 473
9.3 protected成员 475
9.4 基类和派生类之间的关系 475
9.5 案例分析:三级继承层次 494
9.6 派生类中的构造函数和析构函数 498
9.7 “uses a”和“knows a”关系 503
9.8 public、protected和private继承 503
9.9 关于继承的软件工程 504
9.10 【可选案例分析】对象思想:在电梯模拟程序中结合继承 505
9.11 本章小结 511
第10章 面向对象程序设计:多态性 514
10.1 概述 514
10.2 继承层次中对象之间的关系 515
10.3 多态性举例 527
10.5 抽象类 528
10.4 类型域和switch结构 528
10.6 案例分析:继承接口和实现 530
10.7 多态性、虚拟函数和动态绑定 540
10.8 虚析构函数 543
10.9 案例分析:用多态性和带dynamic_cast和typeid的运行时类型信息的工资发放系统 543
10.10 本章小结 555
第11章 模板 559
11.1 简介 559
11.2 函数模板 560
11.3 重载函数模板 562
11.4 类模板 562
11.6 模板与继承 567
11.5 类模板与无类型参数 567
11.7 模板与友元 568
11.8 模板与静态数据成员 569
11.9 本章小结 569
第12章 C++输入/输出流 572
12.1 简介 572
12.2 流 572
12.3 输出流 575
12.4 输入流 577
12.5 使用成员函数read、write和gcount的无格式输入/输出 580
12.6 流操作元 581
12.7 流格式状态和流操作元 585
12.8 流错误状态 594
12.9 把输出流连接到输入流 596
12.10 本章小结 596
第13章 异常处理 604
13.1 简介 604
13.2 异常处理概述 604
13.3 其他错误处理技术 606
13.4 简单异常处理例子:除数为0 607
13.5 重抛出异常 610
13.6 异常规范 611
13.8 堆栈解退 612
13.7 处理意外异常 612
13.9 构造函数、析构函数与异常处理 613
13.10 异常与继承 614
13.11 处理new失败 614
13.12 auto_ptr类与动态内存分配 618
13.13 标准库异常的层次结构 620
13.14 本章小结 621
14.1 简介 626
14.2 数据的层次结构 626
第14章 文件处理 626
14.3 文件和流 628
14.4 创建顺序访问文件 629
14.5 读取顺序访问文件中的数据 632
14.6 更新顺序访问文件 637
14.7 随机访问文件 638
14.8 建立随机访问文件 638
14.9 向随机访问文件随机写入数据 642
14.10 从随机访问文件中顺序读取数据 644
14.11 案例分析:事务处理程序 646
14.12 对象的输入/输出 652
14.13 本章小结 653
15.1 简介 659
第15章 string类和字符串流处理 659
15.2 字符串的赋值与连接 660
15.3 比较字符串 662
15.4 子串 664
15.5 交换字符串 665
15.6 字符串的特性 666
15.7 查找字符串中的字符串和字符 668
15.8 替换字符串中的字符 670
15.9 在字符串中插入字符 671
15.10 转换为C风格的char字符串 672
15.11 迭代器 674
15.12 字符串流处理 675
15.13 本章小结 678
第16章 CGI Web编程 682
16.1 简介 682
16.2 HTTP请求类型 682
16.3 多层构架 683
16.4 访问Web服务器 684
16.5 Apache HTTP服务器 685
16.6 请求XHTML文档 685
16.7 CGI概述 686
16.8 简单的HTTP事务 686
16.9 简单的CGI脚本 688
16.10 把输入发送给CGI脚本 694
16.12 其他标题 702
16.13 案例分析:交互式网页 702
16.14 Cookies 706
16.15 服务器端文件 711
16.16 案例分析:购物车 715
16.17 Internet和Web资源 728
16.18 本章小结 729
第17章 数据结构 732
17.1 简介 732
17.3 动态内存分配 733
17.2 自引用类 733
17.4 链表 734
17.5 堆栈 745
17.6 队列 750
17.7 树 753
17.8 本章小结 760
第18章 位、字符、字符串和结构 775
18.1 简介 775
18.2 结构定义 775
18.3 结构初始化 777
18.4 在函数中使用结构 777
18.5 关键字typedef 777
18.6 示例:高性能洗牌与发牌模拟程序 778
18.7 位运算符 780
18.8 位域 787
18.9 字符处理函数库 790
18.10 字符串转换函数 795
18.11 字符串处理函数库中的查找函数 799
18.12 字符串处理函数库中的内存处理函数 803
18.13 本章小结 807
第19章 预处理程序 816
19.1 简介 816
19.2 预处理程序指令#include 816
19.4 预处理程序指令#define:宏指令 817
19.3 预处理程序指令#define:符号常量 817
19.5 条件编译 819
19.6 预处理程序指令#error与#pragma 819
19.7 #与##运算符 820
19.8 行号 820
19.9 预定义的符号常量 820
19.10 宏指令(assert) 821
19.11 本章小结 821
第20章 C遗留代码 825
20.1 简介 825
20.2 UNIX和DOS系统上的输入/输出重定向 825
20.3 变长参数列表 826
20.4 使用命令行参数 828
20.5 关于编译多重源文件程序的说明 829
20.6 用函数exit与atexit终止程序运行 831
20.7 类型限定符volatile 832
20.8 整型数和浮点数常量的后缀 832
20.9 信号处理 833
20.10 用calloc与realloc进行动态内存分配 835
20.11 无条件转向语句:goto 835
20.12 共同体 836
20.13 连接规范 839
20.14 本章小结 840
第21章 标准模板库(STL) 844
21.1 标准模板库(STL)简介 844
21.2 序列容器 853
21.3 关联容器 864
21.4 容器适配器 871
21.5 算法 876
21.6 bitset类 903
21.7 函数对象 906
21.8 因特网与万维网上有关STL的资源 909
21.9 本章小结 910
22.2 const_cast运算符 916
22.1 简介 916
第22章 其他主题 916
22.3 reinterpret_cast运算符 917
22.4 命名空间 918
22.5 运算符关键字 921
22.6 显式构造函数 922
22.7 可变类成员 927
22.8 类成员指针(.*和->*) 928
22.9 多重继承 930
22.10 多重继承和虚拟基类 933
22.12 本章小结 937
22.11 结束语 937
附录A 运算符优先级表 940
附录B ASCII字符集 942
附录C 数值系统 943
C.1 简介 943
C.2 将二进制数简化为八进制和十六进制数 945
C.3 将八进制和十六进制数转换为二进制数 946
C.4 将二进制、八进制和十六进制数转换为十进制数 946
C.5 将十进制数转换为二进制、八进制或十六进制数 947
C.6 负的二进制数:补码表示法 948
C.7 小结 949
D.1 资源 953
附录D 因特网和万维网上的C++资源 953
D.2 教程 955
D.3 FAQ 956
D.4 Visual C++ 956
D.5 新闻组 956
D.6 编译器和开发工具 957
D.7 标准模板库 957
附录 EXHTML概述 959
E.1 概述 959
E.2 编辑XHTML 959
E.3 第一个XHTML示例 960
E.4 标题 962
E.5 链接 963
E.6 图像 965
E.7 特殊字符和更多的换行 969
E.8 无序列表 970
E.9 嵌套列表和顺序列表 971
E.10 XHTML的基本表格 974
E.11 较复杂的XHTML表格和格式化 976
E.12 XHTML的基本表单 978
E.13 较复杂的XHTML表单 980
E.14 因特网和万维网资源 986
小结 986
附录F XHTML特殊字符 989