图书介绍

C++高级编程【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

C++高级编程
  • (美)Nicholas A. Solter,(美)Scott J. Kleper著;刘鑫,杨健康等译 著
  • 出版社: 北京:机械工业出版社
  • ISBN:7111177789
  • 出版时间:2006
  • 标注页数:687页
  • 文件大小:236MB
  • 文件页数:704页
  • 主题词:C语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

C++高级编程PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

1.1 C++基础1

1.1.1 必不可少的“Hello,World”1

目录1

译者序1

前言1

作者简介1

第一部分 专业C++程序设计概述1

第1章 C++快速入门1

1.1.2 命名空间4

1.1.3 变量5

1.1.4 操作符7

1.1.5 类型9

1.1.6 条件语句10

1.1.7 循环13

1.1.9 函数14

1.1.8 数组14

1.1.10 结束语15

1.2.1 指针和动态内存16

1.2 C++进阶16

1.2.2 C++中的字符串18

1.2.3 引用20

1.2.4 异常21

1.2.5 const的多重用途22

1.3 作为一种面向对象语言的C++23

1.4 你的第一个实用的C++程序25

1.4.2 Employee类26

1.4.1 一个员工记录系统26

1.4.3 Database类30

1.4.4 用户界面34

1.5 小结36

1.4.5 对程序的评价36

2.1 什么是编程设计37

第2章 设计专业的C++程序37

2.2 编程设计的重要性38

2.3 C++设计有什么不同之处39

2.4.1 抽象40

2.4 C++设计的两个原则40

2.4.2 重用41

2.5.2 设计步骤43

2.5.1 需求43

2.5 设计一个象棋程序43

2.6 小结47

3.1.1 我是在以过程性思维思考吗48

3.1 面向对象的世界观48

第3章 基于对象的设计48

3.1.2 面向对象思想49

3.1.3 身处对象世界中51

3.1.4 对象关系52

3.1.5 抽象61

3.2 小结63

4.1.1 有关术语64

4.1 重用代码64

第4章 基于库和模式的设计64

4.1.2 决定是否重用代码65

4.1.3 重用代码的策略67

4.1.5 开源库70

4.1.4 捆绑第三方应用70

4.1.6 C++标准库71

4.2.1 设计技术81

4.2 利用模式和技术完成设计81

4.2.2 设计模式82

4.3 小结83

5.1 重用方法论84

第5章 重用设计84

5.2.1 使用抽象85

5.2 如何设计可重用的代码85

5.2.2 适当地建立代码结构以优化重用86

5.2.3 设计可用的接口89

5.2.4 协调一般性和易用性93

5.3 小结94

6.1 为什么需要过程95

第6章 充分利用软件工程方法95

6.2.1 分阶段模型和瀑布模型96

6.2 软件生命期模型96

6.2.2 螺旋方法98

6.2.3 统一开发过程100

6.3.1 极限编程(XP)101

6.3 软件工程方法论101

6.4 建立自己的过程和方法论104

6.3.2 软件triage104

6.5 小结105

6.4.4 不要做叛逃者105

6.4.1 以开放的心态接纳新思想105

6.4.2 汇总新思想105

6.4.3 明确哪些可行,哪些不可行105

7.1.2 保持清晰107

7.1.1 提前考虑107

第二部分 编写C++代码方式107

第7章 好的编码风格107

7.1 为什么代码看上去要好107

7.2.1 写注释的原因108

7.2 为代码加注释108

7.1.3 好的代码风格包括哪些因素108

7.2.2 注释风格111

7.3.1 通过重构来分解115

7.3 分解115

7.2.3 本书中的注释115

7.3.2 根据设计来分解116

7.4.1 选择一个好名字117

7.4 命名117

7.3.3 本书中的分解117

7.4.2 命名约定118

7.5.1 使用常量119

7.5 合理地使用语言特性119

7.5.4 使用定制异常120

7.5.3 使用引用而不是指针120

7.5.2 利用const变量120

7.6.1 有关大括号对齐的争论121

7.6 格式化121

7.7 风格方面的难题122

7.6.3 空格和制表符122

7.6.2 考虑空格和小括号122

7.8 小结123

8.2.1 类定义124

8.2 编写类124

第8章 掌握类和对象124

8.1 电子表格示例124

8.2.2 定义方法127

8.2.3 使用对象130

8.3.1 对象创建131

8.3 对象生命期131

8.3.2 对象撤销140

8.3.3 对象赋值141

8.3.4 区别复制和赋值143

8.4 小结144

9.1.1 Spreadsheet类145

9.1 对象中的动态内存分配145

第9章 精通类和对象145

9.1.3 处理复制和赋值147

9.1.2 用析构函数释放内存147

9.2.1 静态数据成员154

9.2 不同类型的数据成员154

9.2.2 const数据成员156

9.2.3 引用数据成员157

9.3.1 静态方法158

9.3 深入了解方法158

9.2.4 const引用数据成员158

9.3.2 const方法159

9.3.3 方法重载161

9.3.4 默认参数162

9.3.5 内联方法163

9.4 嵌套类164

9.6.1 实现加法166

9.6 操作符重载166

9.5 友元166

9.6.2 重载算术操作符170

9.6.3 重载比较操作符172

9.7 方法和成员指针174

9.6.4 利用操作符重载构建类型174

9.8 构建抽象类175

9.9 小结178

10.1.1 扩展类179

10.1 使用继承构建类179

第10章 探索继承技术179

10.1.2 覆盖方法182

10.2.1 类WeatherPrediction184

10.2 继承以实现重用184

10.2.2 在子类中增加功能185

10.3.1 父构造函数187

10.3 考虑父类187

10.2.3 在子类中进行功能替换187

10.3.2 父析构函数189

10.3.3 引用父类的数据191

10.3.4 向上类型强制转换和向下类型强制转换192

10.4.1 Spreadsheet的返回结果193

10.4 继承以实现多态193

10.4.3 电子表格单元格的基类194

10.4.2 设计多态电子表格单元格194

10.4.4 各个子类196

10.4.5 充分利用多态198

10.4.6 将来的考虑199

10.5.1 从多个类继承200

10.5 多重继承200

10.5.2 命名冲突与二义基类201

10.6.1 改变覆盖方法的特性203

10.6 继承技术中有趣而隐蔽的问题203

10.6.2 覆盖方法的特殊情况206

10.6.3 复制构造函数与相等操作符212

10.6.4 关键字virtual的真相213

10.6.5 运行时类型工具215

10.6.7 虚基类217

10.6.6 非公共继承217

10.7 小结218

11.1 模板概述219

第11章 利用模板编写通用代码219

11.2.1 编写类模板220

11.2 类模板220

11.2.2 编译器如何处理模板227

11.2.3 模板代码在文件之间的分布228

11.2.4 模板参数229

11.2.5 方法模板231

11.2.6 模板类特殊化235

11.2.7 从模板类派生子类239

11.3 函数模板240

11.2.8 继承与特殊化的区别240

11.3.1 函数模板特殊化241

11.3.2 函数模板的重载242

11.3.3 类模板的友元函数模板243

11.4.1 关于模板参数的更多知识244

11.4 高级模板244

11.4.2 模板类的部分特殊化251

11.4.3 用重载模板函数部分特殊化256

11.4.4 模板递归257

11.5 小结264

12.1.1 引用变量265

12.1 引用265

第12章 理解C++疑难问题265

12.1.3 引用参数267

12.1.2 引用数据成员267

12.1.5 采用引用还是指针268

12.1.4 引用返回类型268

12.2.1 关键字const270

12.2 关键字疑点270

12.2.2 关键字static273

12.3.1 typedef276

12.3 类型与类型强制转换276

12.2.3 非局部变量的初始化顺序276

12.3.2 类型强制转换277

12.4 解析作用域281

12.5 头文件282

12.6.1 变量长度参数列表283

12.6 C实用工具283

12.7 小结285

12.6.2 预处理宏285

13.1.1 如何描述内存287

13.1 使用动态内存287

第三部分 掌握C++高级特性287

第13章 有效的内存管理287

13.1.2 内存的分配与撤销289

13.1.3 数组291

13.1.4 使用指针297

13.2.1 数组即指针299

13.2 数组与指针的对应299

13.3 动态字符串300

13.2.2 指针并非都是数组300

13.3.1 C风格的字符串301

13.3.2 字符串直接量302

13.3.3 C++的字符串类303

13.4.1 指针运算304

13.4 低级的内存操作304

13.4.3 垃圾回收305

13.4.2 自定义内存管理305

13.4.5 函数指针306

13.4.4 对象池306

13.5.1 字符串空间分配不足308

13.5 常见的内存陷阱308

13.5.2 内存泄漏309

13.5.3 二次删除与无效指针311

13.6 小结312

13.5.4 访问越界指针312

14.1.2 流的源与目的313

14.1.1 到底什么是流313

第14章 揭开C++ I/O的神秘面纱313

14.1 使用流313

14.1.3 流输出314

14.1.4 流输入317

14.1.5 输入与输出对象321

14.2 字符串流323

14.3 文件流324

14.3.1 使用seek()与tell()325

14.4 双向I/O327

14.3.2 链接流327

14.5.2 非西方字符集329

14.5.1 宽字符329

14.5 国际化329

14.5.3 本地化环境与方面330

14.6 小结332

15.1.1 到底什么是异常333

15.1 错误和异常333

第15章 处理错误333

15.1.2 C++中的异常为什么好334

15.2 异常机制335

15.1.4 我们的建议335

15.1.3 C++中的异常为什么不好335

15.2.1 抛出和捕获异常336

15.2.2 异常类型338

15.2.3 抛出和捕获多个异常339

15.2.4 未捕获的异常342

15.2.5 抛出列表343

15.3.1 标准异常层次体系346

15.3 异常和多态346

15.3.2 按类层次捕获异常348

15.3.3 编写自己的异常类349

15.4 栈展开和清除351

15.4.2 使用智能指针353

15.4.1 捕获、清除和重新抛出353

15.5.1 内存分配错误354

15.5 常见的错误处理问题354

15.5.2 构造函数中的错误356

15.6 综合357

15.5.3 析构函数中的错误357

15.7 小结359

16.1 操作符重载概述361

第16章 重载C++操作符361

第四部分 确保无错代码361

16.1.3 操作符重载中的选择362

16.1.2 操作符重载的限制362

16.1.1 为什么要重载操作符362

16.1.5 可重载操作符小结364

16.1.4 不应重载的操作符364

16.2.1 重载一元减和一元加367

16.2 重载算术操作符367

16.2.2 重载自增和自减368

16.4 重载插入和析取操作符369

16.3 重载位操作符和二元逻辑操作符369

16.5 重载下标操作符371

16.5.1 利用operator[ ]提供只读访问373

16.6 重载函数调用操作符375

16.5.2 非整数数组索引375

16.7 重载解除引用操作符377

16.7.1 实现operator*378

16.7.3 到底什么是operator->*379

16.7.2 实现operator->379

1 6.8编写转换操作符380

16.8.1 转换操作符的二义性问题381

16.8.2 布尔表达式的转换382

16.9 重载内存分配和撤销操作符383

16.9.1 new和delete究竟如何工作384

16.9.2 重载operator new和operator delete385

16.9.3 重载带额外参数的operator new和operator delete387

16.10 小结389

17.1.2 两类程序390

17.1.1 实现高效的两种方法390

第17章 编写高效的C++程序390

17.1 性能和效率概述390

17.2 语言级效率391

17.1.3 C++是一种低效语言吗391

17.2.1 高效地处理对象392

17.2.2 不要过度使用高开销的语言特性394

17.2.3 使用内联方法和函数395

17.3.1 尽可能缓存396

17.3 设计级效率396

17.3.2 使用对象池397

17.4 测评分析402

17.3.3 使用线程池402

17.5 小结410

18.1.1 体系结构问题411

18.1 跨平台开发411

第18章 开发跨平台和跨语言的应用411

18.1.2 实现问题413

18.1.3 特定于平台的特性414

18.2.2 转换模式415

18.2.1 混合C和C++415

18.2 跨语言开发415

18.2.3 与C代码的链接418

18.2.4 利用JNI混合Java和C++419

18.2.5 C++与Perl和Shell脚本的混合421

18.3 小结424

18.2.6 C++与汇编代码的混合424

19.1.2 bug的生命期425

19.1.1 谁来负责测试425

第19章 熟练地测试425

19.1 质量控制425

19.1.3 bug跟踪工具427

19.2.1 单元测试的方法428

19.2 单元测试428

19.2.2 单元测试过程429

19.2.3 实战单元测试431

19.3.1 集成测试439

19.3 高级测试439

19.3.2 系统测试440

19.4 成功测试的提示441

19.3.3 回归测试441

19.5 小结442

20.3 避免bug443

20.2 bug分类443

第20章 征服调试443

20.1 调试基本法则443

20.4.1 错误日志444

20.4 找出bug的方法444

20.4.2 调试轨迹445

20.4.3 断言455

20.5.2 调试可再生bug456

20.5.1 再生bug456

20.5 调试技术456

20.5.4 调试内存问题457

20.5.3 调试不可再生bug457

20.5.6 调试示例:文章引用461

20.5.5 调试多线程程序461

20.6 小结472

20.5.7 从ArticleCitations示例学到的教训472

21.1 容器概述473

第21章 深入STL:容器和迭代器473

21.1.2 异常和错误检查474

21.1.1 元素需求474

21.1.3 迭代器475

21.2.1 vector476

21.2 顺序容器476

21.2.2 vector<bool>特殊化492

21.2.4 list493

21.2.3 deque493

21.3.1 queue496

21.3 容器适配器496

21.3.2 priority_queue499

21.3.3 stack502

21.4.1 pair工具类503

21.4 关联容器503

21.4.2 map504

21.4.3 multimap511

21.4.4 set515

21.4.5 multiset517

21.5 其他容器517

21.5.1 数组作为STL容器517

21.5.2 string作为STL容器518

21.5.3 流作为STL容器519

21.5.4 bitset519

21.6 小结524

第五部分 使用库和模式525

第22章 掌握STL算法和函数对象525

22.1 算法概述525

22.1.1 find()和find_if()算法526

22.1.2 accumulate()算法528

22.2.1 算术函数对象529

22.2 函数对象529

22.2.2 比较函数对象530

22.2.3 逻辑函数对象531

22.2.4 函数对象适配器531

22.2.5 编写自己的函数对象534

22.3 算法细节535

22.3.1 工具算法536

22.3.2 非修改算法536

22.3.3 修改算法542

22.3.4 排序算法545

22.3.5 集合算法547

22.4.1 选民注册审计问题描述549

22.4.2 auditVoterRolls()函数549

22.4 算法和函数对象示例:选民注册审计549

22.4.3 getDuplicates()函数550

22.4.4 RemoveNames函数对象551

22.4.5 NameInList函数对象552

22.4.6 测试auditVoterRolls()函数553

22.5 小结554

第23章 定制和扩展STL555

23.1 分配器555

23.2 迭代器适配器556

23.2.1 逆序迭代器556

23.2.2 流迭代器557

23.2.3 插入迭代器557

23.3.1 为什么要扩展STL559

23.3.2 编写STL算法559

23.3 扩展STL559

23.3.3 编写一个STL容器561

23.4 小结587

24.1 分布式计算的魅力588

24.1.1 分布以获得可扩展性588

第24章 探讨分布式对象588

24.1.4 分布式内容589

24.1.3 分布以获得集中性589

24.1.5 分布式vs网络式589

24.1.2 分布以获得可靠性589

24.2 分布式对象590

24.2.1 串行化和编组590

24.2.2 远程过程调用593

24.3 CORBA595

24.3.1 接口定义语言595

24.3.2 实现类597

24.3.3 使用对象598

24.4 XML602

24.4.1 XML快速入门602

24.4.2 XML作为一种分布式对象技术604

24.4.3 用C++生成和解析XML604

24.4.4 XML验证612

24.4.5 用XML构建分布式对象613

24.4.6 SOAP(简单对象访问协议)616

24.5 小结618

25.1 “我想不起来如何…”619

25.1.1 ……编写一个类619

第25章 结合技术和框架619

25.1.2 ……派生一个现有类621

25.1.3 ……抛出和捕获异常622

25.1.4 ……读文件622

25.1.5 ……写文件623

25.1.6 ……编写模板类623

25.2 还有更好的办法625

25.2.1 带引用计数的智能指针625

25.2.2 双重分派630

25.2.3 混合类635

25.3 面向对象框架637

25.3.1 使用框架637

25.3.2 模型-视图-控制器模式638

25.4 小结639

26.1 单例模式640

26.1.1 举例:日志机制640

第26章 应用设计模式640

26.1.2 单例的实现641

26.1.3 使用单例645

26.2 工厂模式646

26.2.1 举例:汽车工厂模拟646

26.2.2 实现工厂648

26.2.3 使用工厂650

26.2.4 工厂的其他使用651

26.3.1 举例:隐藏网络连通性问题652

26.3.2 实现代理652

26.3 代理模式652

26.4 适配器模式653

26.4.1 举例:适配一个XML库653

26.3.3 使用代理653

26.4.2 适配器的实现654

26.4.3 使用适配器657

26.5 装饰器模式658

26.5.1 举例:定义网页中的样式658

26.5.2 装饰器的实现659

26.5.3 使用装饰器660

26.6.1 举例:事件处理661

26.6.2 职责链的实现661

26.6 职责链模式661

26.6.3 使用职责链662

26.7 观察者模式662

26.7.1 举例:事件处理663

26.7.2 实现观察者663

26.7.3 使用观察者664

26.8 小结665

附录666

附录A C++面试宝典666

附录B 参考书目681

热门推荐