《C++程序设计教程 第4版》PDF下载

  • 购买积分:25 如何计算积分?
  • 作  者:(美)H.M.Deitel,(美)P.J.Deitel著;施平安译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2004
  • ISBN:7302080089
  • 页数:989 页
图书介绍:本书是全球畅销的C++程序设计教材,全书注重理论与实践相结合。详细介绍了过程式编程和面向对象编程的基本原理和方法,重点突出了用UML进行面向对象系统分析与设计方法。

目录 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