《C++程序员教程》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:保罗.戴特尔,哈维.戴特尔著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2010
  • ISBN:9787121099052
  • 页数:724 页
图书介绍:本书是一本C++编程方面的优秀教程,全面地介绍了过程式编程与面向对象编程的原理和方法,包括类与对象、控制语句、递归、数组、指针、运算符重载、继承、多态、模板、流输入/输出、异常处理、文件处理、标准模板库等。

第1章 基本介绍 1

1.1简介 2

1.2 C和C++的历史 2

1.3 C++标准类库 3

1.4重要的软件趋势:对象技术 3

1.5典型的C++开发环境 4

1.6关于C++和本书的说明 6

1.7测试驱动的C++程序 7

1.8软件技术 11

1.9 C++的未来:开源Boost类库,TR1和C++0x 12

1.10软件工程案例研究:对象技术和UML介绍 12

1.11小结 15

1.12 Web资源 16

第2章 C++编程入门 18

2.1简介 19

2.2第一个C++程序:输出一行文本 19

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

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

2.5算术运算 24

2.6判断:相等运算符和关系运算符 26

2.7(选读)软件工程案例研究:分析ATM需求规范 28

2.8小结 35

第3章 简要介绍类和对象 36

3.1简介 37

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

3.3本章的例子概述 38

3.4定义带成员函数的类 38

3.5定义带参数的成员函数 41

3.6数据成员、set函数和get函数 43

3.7用构造函数初始化对象 48

3.8将类放入单独的文件中,提高复用性 50

3.9分离接口与实现 53

3.10用set函数验证数据 57

3.11(选读)软件工程案例研究:确定ATM需求规范中的类 61

3.12小结 66

第4章 控制语句(1) 67

4.1简介 68

4.2控制结构 68

4.3 if选择语句 70

4.4 if...else双选择语句 71

4.5 while循环语句 74

4.6计数器控制循环 74

4.7标记控制循环 78

4.8嵌套控制语句 82

4.9赋值运算符 84

4.10增量和减量运算符 85

4.11(选读)软件工程案例研究:确定ATM系统的类属性 87

4.12小结 90

第5章 控制语句(2) 91

5.1简介 92

5.2计数器控制循环的实质 92

5.3 for循环语句 93

5.4使用for语句的例子 96

5.5 do...while循环语句 99

5.6 switch多选择语句 101

5.7 break与continue语句 108

5.8逻辑运算符 109

5.9相等运算符(==)与赋值运算符(=) 112

5.10(选读)软件工程案例研究:确定ATM系统中对象的状态和活动 113

5.11小结 117

第6章 函数与递归 118

6.1简介 119

6.2 C++中的程序组件 119

6.3数学类库函数 119

6.4有多个参数的函数定义 120

6.5函数原型与实参强制性 124

6.6 C++标准类库头文件 126

6.7案例研究:随机数生成 127

6.8案例研究:机会游戏,引入枚举 131

6.9存储类 134

6.10作用域规则 136

6.11函数调用栈与活动记录 138

6.12带空参数表的函数 141

6.13内联函数 142

6.14引用与引用参数 143

6.15 默认实参 146

6.16一元作用域分解操作符 148

6.17函数重载 149

6.18函数模板 151

6.19递归 153

6.20使用递归的例子:Fibonacci序列 155

6.21递归与迭代的比较 157

6.22(选读)软件工程案例研究:确定ATM系统的类操作 159

6.23小结 163

第7章 数组与类模板vector 164

7.1简介 165

7.2数组 165

7.3声明数组 166

7.4数组使用举例 167

7.5将数组传入函数 179

7.6案例研究:GradeBook类用数组保存成绩 182

7.7对数组进行线性搜索 187

7.8对数组进行插入排序 188

7.9多维数组 190

7.10案例研究:GradeBook类使用二维数组 192

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

7.12(选读)软件工程案例研究:ATM系统中对象间的协作 201

7.13小结 206

第8章 指针与基于指针的字符串 207

8.1简介 208

8.2指针变量的声明与初始化 208

8.3指针运算符 209

8.4利用指针将实参按引用传递给函数 211

8.5使用常量指针 214

8.6使用按引用传递的选择排序 219

8.7 sizeof运算符 221

8.8指针表达式与指针运算 224

8.9指针与数组的关系 225

8.10指针数组 228

8.11案例研究:洗牌与发牌模拟 229

8.12函数指针 232

8.13基于指针的字符串处理介绍 236

8.14小结 244

第9章 类:深入探究(1) 245

9.1简介 246

9.2 Time类案例研究 246

9.3类的作用域与访问类成员 251

9.4分离接口与实现 252

9.5访问函数和工具函数 253

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

9.7析构函数 259

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

9.9 Time类案例研究:微妙的陷阱——返回私有数据成员的引用 262

9.10默认的逐成员赋值 264

9.11(选读)软件工程案例研究:开始编程ATM系统的类 266

9.12小结 271

第10章 类:深入探究(2) 272

10.1简介 273

10.2常量对象与常量成员函数 273

10.3合成:作为类成员的对象 280

10.4友元函数与友元类 285

10.5使用this指针 288

10.6用new和delete操作符实现动态内存管理 292

10.7静态类成员 293

10.8数据抽象与信息隐藏 298

10.9容器类与迭代器 300

10.10代理类 300

10.11小结 302

第11章 运算符重载:字符串与数组对象 304

11.1简介 305

11.2运算符重载基础 305

11.3运算符重载的限制 306

11.4作为类成员的运算符函数与全局函数的比较 307

11.5重载流插入与流提取运算符 308

11.6重载一元运算符 311

11.7重载二元运算符 311

11.8案例研究:Array类 312

11.9类型之间的转换 321

11.10案例研究:String类 322

11.11重载++和-- 331

11.12案例研究:Date类 332

11.13标准类库的string类 335

11.14用explicit声明构造函数 338

11.15 小结 341

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

12.1简介 343

12.2基类与派生类 343

12.3保护成员 345

12.4基类与派生类的关系 345

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

12.6公有、保护和私有继承 374

12.7继承与软件工程 374

12.8小结 376

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

13.1简介 378

13.2多态举例 378

13.3继承层次中对象间的关系 379

13.4类型字段与switch语句 392

13.5抽象类与纯虚函数 393

13.6案例研究:使用多态的工资系统 394

13.7(选读)多态、虚函数和动态绑定的“内幕” 406

13.8案例研究:利用多态以及使用向下强制转换、dynarnic_cast、typeid和type_info运行时类型信息的工资系统 409

13.9虚析构函数 412

13.10(选读)软件工程案例研究:在ATM系统中加入继承 412

13.11小结 418

第14章 模板 419

14.1简介 420

14.2函数模板 420

14.3重载函数模板 422

14.4类模板 423

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

14.6模板与继承 428

14.7模板与友元 429

14.8模板与静态成员 429

14.9小结 430

第15章 流输入/输出 431

15.1简介 432

15.2流 432

15.3流输出 435

15.4流输入 436

15.5使用read、write和gcount的非格式化1/O 439

15.6流操作子简介 440

15.7流格式状态与流操作子 444

15.8流的错误状态 451

15.9将输出流与输入流连接 452

15.10小结 453

第16章 异常处理 454

16.1简介 455

16.2异常处理概述 455

16.3例子:处理除零错误 456

16.4何时使用异常处理 460

16.5重抛异常 461

16.6异常规范 462

16.7处理意外的异常 462

16.8堆栈解退 463

16.9构造函数、析构函数与异常处理 464

16.10异常与继承 465

16.11处理new失败 465

16.12 auto_ptr类与动态内存分配 468

16.13标准类库中的异常层次 470

16.14其他的错误处理技术 471

16.15 小结 472

第17章 文件处理 473

17.1简介 474

17.2数据层次 474

17.3文件和流 475

17.4创建顺序文件 476

17.5从顺序文件读取数据 479

17.6更新顺序文件 483

17.7随机访问文件 484

17.8创建随机访问文本文件 484

17.9向随机访问文件写随机数据 488

17.10从随机访问文件顺序读取 490

17.11案例研究:交易处理程序 491

17.12对象序列化概述 496

17.13小结 497

第18章 string类与字符串流处理 498

18.1简介 499

18.2字符串的赋值与拼接 500

18.3字符串比较 501

18.4子串 503

18.5字符串交换 504

18.6字符串的特性 504

18.7搜索字符串中的子串和字符 506

18.8替换字符串中的字符 508

18.9将字符插入到字符串中 509

18.10转换成C风格的char*字符串 510

18.11迭代器 511

18.12处理字符串流 512

18.13小结 514

第19章 位、字符、C字符串和结构 515

19.1简介 516

19.2结构定义 516

19.3初始化结构 517

19.4将结构用于函数 518

19.5 typedef定义 518

19.6例子:高性能的洗牌与发牌模拟 518

19.7位运算符 521

19.8位段 527

19.9字符处理类库 530

19.10基于指针的字符串转换函数 534

19.11基于指针的字符串处理类库中的搜索函数 537

19.12基于指针的字符串处理类库中的内存函数 541

19.13小结 544

第20章 标准模板类库(STL) 545

20.1标准模板类库(STL)介绍 546

20.2序列容器 554

20.3关联容器 564

20.4容器适配器 570

20.5算法 574

20.6 bitset类 597

20.7函数对象 600

20.8小结 602

20.9 STL Web资源 602

第21章 Boost类库、Technical Report 1和C++Ox 603

21.1简介 604

21.2 Deitel在线C++以及相关的资源中心 604

21.3 Boost类库 604

21.4向Boost添加新类库 604

21.5安装Boost类库 605

21.6 Technical Report 1(TR1)中的Boost类库 605

21.7正则表达式与Boost.Regex类库 607

21.8智能指针与Boost.Smart_ptr 613

21.9 Technical Report 1 621

21.10 C++0x 622

21.11核心的语言变化 622

21.12小结 626

第22章 其他主题 627

22.1简介 628

22.2 const cast运算符 628

22.3名字空间 629

22.4运算符关键字 632

22.5 mutable类成员 634

22.6类成员的指针(.*和->*) 635

22.7多重继承 636

22.8多重继承与虚拟基类 640

22.9小结 644

附录A 运算符的优先级和结合性 645

附录B ASCII字符集 647

附录C 基础类型 648

附录D 预处理器 649

附录E ATM案例研究代码 655

附录F UML 2的其他框图类型 678

附录G 使用Visual Studio调试器 679

附录H 使用GNU C++调试器 689

参考文献 701

索引 706