《C++大学教程》PDF下载

  • 购买积分:22 如何计算积分?
  • 作  者:(美)P.J.Deitel,(美)H.M.Deitel著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2010
  • ISBN:9787121118494
  • 页数:809 页
图书介绍:本书是一本C++编程方面的优秀教程,全面地介绍了过程式编程与面向对象编程的原理和方法,细致地分析了各种性能问题、移植性问题和可能出错的地方,介绍了如何提高软件工程质量,并提供了丰富的自测练习和项目练习。可以说本书是最好的学习C++语言的教程之一,是学习C++的“宝典”。

第1章 计算机、Internet和万维网简介 1

1.1 简介 2

1.2 计算机:硬件和软件 3

1.3 计算机的组成 3

1.4 个人计算、分布式计算和客户/服务器计算 4

1.5 Internet和万维网 4

1.6 Web 2.0 4

1.7 机器语言、汇编语言和高级语言 5

1.8 C和C++的历史 6

1.9 C++标准库 7

1.10 Java的历史 8

1.11 FORTRAN、COBOL、Pascal和Ada 8

1.12 BASIC、Visual Basic、Visual C++、C#和.NET 9

1.13 主要的软件趋势:对象技术 9

1.14 典型的C++开发环境 10

1.15 关于C++和本书的几点说明 12

1.16 试运行一个C++应用程序 12

1.17 软件技术 17

1.18 C++的未来:开源Boost库、TR1和C++0x 17

1.19 软件工程实例研究:对象技术和UML介绍 18

1.20 本章小结 21

1.21 Web资源 22

第2章 C++编程入门 30

2.1 简介 30

2.2 第一个C++程序:打印一行文本 31

2.3 修改第一个C++程序 33

2.4 另一个C++程序:整数相加 34

2.5 内存的概念 38

2.6 算术运算 38

2.7 判断:相等运算符和关系运算符 41

2.8 本章小结 44

第3章 类和对象介绍 53

3.1 简介 53

3.2 类、对象、成员函数和数据成员 54

3.3 定义具有成员函数的类 55

3.4 定义具有形参的成员函数 57

3.5 数据成员、set函数和get函数 60

3.6 使用构造函数初始化对象 65

3.7 一个类对应一个独立文件的可复用性 67

3.8 接口与实现的分离 70

3.9 用set函数确认数据的有效性 74

3.10 本章小结 78

第4章 控制语句(第Ⅰ部分) 84

4.1 简介 84

4.2 算法 85

4.3 伪代码 85

4.4 控制结构 86

4.5 if选择语句 89

4.6 if...else双路选择语句 90

4.7 while循环语句 94

4.8 算法详述:计数器控制的循环 95

4.9 算法详述:标记控制的循环 100

4.10 算法详述:嵌套的控制语句 107

4.11 赋值运算符 111

4.12 自增和自减运算符 112

4.13 本章小结 114

第5章 控制语句(第Ⅱ部分) 127

5.1 简介 127

5.2 计数器控制的循环的要素 128

5.3 for循环语句 129

5.4 使用for语句的例子 132

5.5 do...while循环语句 136

5.6 switch多路选择语句 137

5.7 break和continue语句 144

5.8 逻辑运算符 145

5.9 ==运算符与=运算符的混淆问题 148

5.10 结构化编程小结 149

5.11 本章小结 153

第6章 函数和递归入门 162

6.1 简介 163

6.2 C++的程序组件 163

6.3 数学库函数 164

6.4 多形参函数定义 165

6.5 函数原型和实参类型的强制转换 168

6.6 C++标准库头文件 170

6.7 实例研究:随机数生成 171

6.8 实例研究:博彩游戏和enum简介 175

6.9 存储类别 178

6.10 作用域规则 180

6.11 函数调用堆栈和活动记录 182

6.12 无参函数 185

6.13 内联函数 186

6.14 引用和引用形参 187

6.15 默认实参 190

6.16 一元作用域分辨运算符 191

6.17 函数重载 192

6.18 函数模板 194

6.19 递归 196

6.20 递归应用示例:Fibonacci数列 199

6.21 递归与迭代 201

6.22 本章小结 203

第7章 数组与vector 220

7.1 简介 221

7.2 数组 221

7.3 声明数组 222

7.4 使用数组的范例 223

7.5 将数组传递给函数 233

7.6 实例研究:利用数组存放成绩的GradeBook类 236

7.7 采用线性查找法查找数组 240

7.8 采用插值排序法排序数组 241

7.9 多维数组 243

7.10 实例研究:利用二维数组的GradeBook类 245

7.11 C++标准库类模板vector介绍 250

7.12 本章小结 254

第8章 指针 268

8.1 简介 269

8.2 指针变量的声明和初始化 269

8.3 指针运算符 270

8.4 使用指针的按引用传递方式 272

8.5 使用const修饰指针 275

8.6 使用按引用传递方式实现的选择排序 278

8.7 sizeof运算符 281

8.8 指针表达式和指针算术运算 283

8.9 指针和数组之间的联系 285

8.10 基于指针的字符串处理 287

8.11 指针数组 289

8.12 函数指针 289

8.13 本章小结 292

第9章 类的深入剖析(第Ⅰ部分) 307

9.1 简介 307

9.2 Time类实例研究 308

9.3 类的作用域和类成员的访问 313

9.4 接口与实现的分离 314

9.5 访问函数和工具函数 315

9.6 Time类实例研究:默认实参的构造函数 317

9.7 析构函数 321

9.8 何时调用构造函数和析构函数 321

9.9 Time类实例研究:微妙的陷阱——返回private数据成员引用 324

9.10 默认的逐个成员赋值 326

9.11 本章小结 327

第10章 类的深入剖析(第Ⅱ部分) 333

10.1 简介 333

10.2 const对象和const成员函数 334

10.3 组成:对象作为类的成员 340

10.4 friend函数和friend类 345

10.5 使用this指针 347

10.6 static类成员 351

10.7 数据抽象和信息隐藏 354

10.8 本章小结 356

第11章 运算符重载 361

11.1 简介 362

11.2 运算符重载的基础知识 362

11.3 运算符重载的限制 363

11.4 作为类成员函数和全局函数的运算符函数之比较 364

11.5 重载流插入运算符和流提取运算符 365

11.6 重载一元运算符 368

11.7 重载二元运算符 368

11.8 动态内存管理 369

11.9 实例研究:Array类 370

11.10 类型转换 379

11.11 构建String类 380

11.12 重载++和--运算符 381

11.13 实例研究:Date类 382

11.14 标准库中的string类 386

11.15 explicit构造函数 388

11.16 代理类 391

11.17 本章小结 393

第12章 面向对象编程:继承 403

12.1 简介 404

12.2 基类和派生类 405

12.3 protected成员 406

12.4 基类和派生类之间的关系 407

12.5 派生类中的构造函数和析构函数 428

12.6 public、protected和private继承 434

12.7 关于继承的软件工程 435

12.8 本章小结 436

第13章 面向对象编程:多态性 440

13.1 简介 441

13.2 多态性实例 442

13.3 类继承层次中对象之间的关系 443

13.4 类型域和switch语句 455

13.5 抽象类和纯virtual函数 456

13.6 实例研究:应用多态性的工资发放系统 457

13.7 (选读)多态性、virtual函数和动态绑定的底层实现机制 470

13.8 实例研究:应用向下强制类型转换、dynamic_cast、typeid和type_info并使用多态性和运行时类型信息的工资发放系统 473

13.9 virtual析构函数 475

13.10 本章小结 476

第14章 模板 481

14.1 简介 481

14.2 函数模板 482

14.3 重载函数模板 484

14.4 类模板 485

14.5 类模板的非类型参数和默认类型 489

14.6 模板和继承的注意事项 490

14.7 模板和友元的注意事项 491

14.8 模板和静态成员的注意事项 492

14.9 本章小结 492

第15章 输入/输出流 496

15.1 简介 497

15.2 流 497

15.3 输出流 500

15.4 输入流 501

15.5 使用read,write和gcount的非格式化的I/O 504

15.6 流操纵符简介 505

15.7 流的格式状态和流操纵符 509

15.8 流的错误状态 515

15.9 将输出流连接到输入流 517

15.10 本章小结 517

第16章 异常处理 526

16.1 简介 527

16.2 异常处理总览 527

16.3 实例:处理除数为0的异常 528

16.4 什么时候使用异常处理 532

16.5 重新抛出异常 533

16.6 异常规格 534

16.7 处理意料之外的异常 534

16.8 堆栈展开 535

16.9 构造函数、析构函数和异常处理 536

16.10 异常和继承 537

16.11 处理new失败 537

16.12 类auto_ptr和动态内存分配 539

16.13 标准库异常类层次 541

16.14 其他异常处理技术 542

16.15 本章小结 542

第17章 文件处理 548

17.1 简介 548

17.2 数据层次 549

17.3 文件和流 550

17.4 创建顺序文件 551

17.5 从顺序文件读取数据 554

17.6 更新顺序文件 558

17.7 随机存取文件 558

17.8 创建随机存取文件 559

17.9 向随机存取文件随机写入数据 562

17.10 从随机存取文件顺序读取数据 564

17.11 实例研究:事务处理程序 565

17.12 对象序列化概述 570

17.13 本章小结 570

第18章 string类和字符串流处理 580

18.1 简介 581

18.2 字符串的赋值和连接 582

18.3 字符串的比较 583

18.4 子串 585

18.5 交换字符串 585

18.6 string类的特征 586

18.7 查找字符串中的子串和字符 588

18.8 在字符串中替换字符 589

18.9 在字符串中插入字符 591

18.10 转换成C风格的基于指针的char *字符串 591

18.11 迭代器 592

18.12 字符串流处理 593

18.13 本章小结 595

第19章 搜索和排序 602

19.1 简介 603

19.2 搜索算法 603

19.3 排序算法 608

19.4 本章小结 614

第20章 数据结构 619

20.1 简介 619

20.2 自引用类 620

20.3 动态内存分配和数据结构 621

20.4 链表 621

20.5 堆栈 632

20.6 队列 635

20.7 树 638

20.8 本章小结 644

第21章 位、字符、C字符串和结构体 653

21.1 简介 654

21.2 结构体的定义 654

21.3 初始化结构体 656

21.4 在函数中使用结构体 656

21.5 typedef 656

21.6 示例:洗牌与发牌模拟 656

21.7 位运算符 658

21.8 位域 665

21.9 字符处理库 668

21.10 基于指针的字符串处理函数 671

21.11 基于指针的字符串转换函数 677

21.12 基于指针的字符串处理库中的搜索函数 680

21.13 基于指针的字符串处理库中的内存函数 683

21.14 本章小结 686

第22章 标准模板库 700

22.1 标准模板库(STL)简介 701

22.2 序列容器 709

22.3 关联容器 719

22.4 容器适配器 725

22.5 算法 728

22.6 bitset类 750

22.7 函数对象 752

22.8 本章小结 755

22.9 Web上的STL资源 755

附录A 运算符的优先级与结合律 765

附录B ASCII字符集 767

附录C 基本数据类型 768

附录D 计数系统 769

附录E 预处理器 779

索引 790