欢迎光临
免费的PDF电子书下载网站

C++沉思录 PDF下载

编辑推荐

聆听大师教诲,掌握编程精髓。1.基于作者在知名技术杂志发表的技术文章、世界各地发表的演讲以及斯坦福大学的课程讲义整理、写作而成。2.著名技术伉俪十年编程生涯的真知灼见。3.本书重点关注的是一些重要的C 思想和编程技巧,旨在让读者理解C 编程中的一些原理(why),而不仅仅是工作机制(how),无论你是否是C 编程专家,都会在本书中发现重要的与C 编程有关的技巧和思考。4.C 之父 Bjarne Stroustrup 倾力推荐。本书涵盖了如下内容:涵盖了广泛的C 思想和技术——从详细的代码示例到设计原则和哲学,不一而足;介绍了如何看待C 中的编程,而不仅仅是遵循C 的规则进行编程;

聆听大师教诲,掌握编程精髓。

1.基于作者在知名技术杂志发表的技术文章、世界各地发表的演讲以及斯坦福大学的课程讲义整理、写作而成。

2.著名技术伉俪十年编程生涯的真知灼见。

3.本书重点关注的是一些重要的C 思想和编程技巧,旨在让读者理解C 编程中的一些原理(why),而不仅仅是工作机制(how),无论你是否是C 编程专家,都会在本书中发现重要的与C 编程有关的技巧和思考。

4.C 之父 Bjarne Stroustrup 倾力推荐。

本书涵盖了如下内容:

涵盖了广泛的C 思想和技术——从详细的代码示例到设计原则和哲学,不一而足;

介绍了如何看待C 中的编程,而不仅仅是遵循C 的规则进行编程;

解释了示例背后的动机;有时甚至使用两种不同的方法来解决同一个问题;

囊括了面向对象编程和通用编程;

解释了标准模板库背后的思想,这是C 中的重要创新。

 

内容简介

《C 沉思录》基于作者在知名技术杂志发表的技术文章、世界各地发表的演讲以及斯坦福大学的课程讲义整理、写作而成,融聚了作者10多年C 程序生涯的真知灼见。《C 沉思录》分为6篇,共32章,分别对C 语言的历史和特点、类和继承、STL与泛型编程、库的设计等几大技术话题进行了详细而深入的讨论,细微之处几乎涵盖了C 所有的设计思想和技术细节。本书通过精心挑选的实例,向读者传达先进的程序设计方法和理念。《C 沉思录》适合有一定经验的C 程序员阅读学习,可以帮助他们提升技术能力,成为C 程序设计的高手。

作者简介

Andrew Koenig,AT&T大规模程序研发部(前贝尔实验室)成员。他从1986年开始从事C语言的研究,1977年加入贝尔实验室。他编写了一些早期的类库,并在1988年组织召开了第一个具有相当规模的C 会议。在ISO/ANSI C 委员会成立的1989年,他就加入了该委员会,并一直担任项目编辑。他已经发表了100多篇C 方面的论文,并在Addsion-Wesley出版了C Traps and Pitfalls 一书(中文版名为《C缺陷与陷阱》,由人民邮电出版社出版),还应邀到世界各地演讲。 Barbara Moo,AT&T网络体系结构部门负责人。在1983年加入贝尔实验室不久,她开始从事Fortran 77编译器的研究工作,这是第一个用C 编写的商业产品。她一直负责AT&T的C 编译器项目,直到AT&T卖掉它的软件业务。她还为SIG会议、Lund技术学院和斯坦福大学提供辅导课程。 Anderw Koenig和Barbara Moo不仅有着多年的C 开发、研究和教学经验,而且还亲身参与了C 的演化和变革,对C 的变化和发展产生了重要的影响。

C++沉思录 PDF下载

目录

第0章 序幕 1

0.1 第 一次尝试 1

0.2 不用类来实现 4

0.3 为什么用C 更简单 5

0.4 一个更大的例子 5

0.5 小结 6



第 一篇 动 机



第 1章 为什么我用C  9

1.1 问题 9

1.2 历史背景 10

1.3 自动软件发布 10

1.4 进入C  13

1.5 重复利用的软件 17

1.6 后记 18

第 2章 为什么用C 工作 19

2.1 小项目的成功 19

2.2 抽象 21

2.3 机器应该为人服务 23

第3章 生活在现实世界中 25



第二篇 类和继承



第4章 类设计者的核查表 31

第5章 代理类 39

5.1 问题 39

5.2 经典解决方案 40

5.3 虚复制函数 41

5.4 定义代理类 42

5.5 小结 44

第6章 句柄:第 一部分 45

6.1 问题 45

6.2 一个简单的类 46

6.3 绑定到句柄 47

6.4 获取对象 48

6.5 简单的实现 48

6.6 引用计数型句柄 49

6.7 写时复制 51

6.8 讨论 52

第7章 句柄:第二部分 55

7.1 回顾 56

7.2 分离引用计数 57

7.3 对引用计数的抽象 58

7.4 存取函数和写时复制 61

7.5 讨论 61

第8章 一个面向对象程序范例 63

8.1 问题描述 63

8.2 面向对象的解决方案 64

8.3 句柄类 67

8.4 扩展1:新操作 69

8.5 扩展2:增加新的节点类型 72

8.6 反思 73

第9章 一个课堂练习的分析(上) 75

9.1 问题描述 75

9.2 接口设计 77

9.3 补遗 79

9.4 测试接口 80

9.5 策略 81

9.6 方案 81

9.7 图像的组合 85

9.8 小结 87

第 10章 一个课堂练习的分析(下) 89

10.1 策略 89

10.2 体验设计的灵活性 102

10.3 小结 105

第 11章 什么时候不应当使用虚函数 107

11.1 适用的情况 107

11.2 不适用的情况 108

11.3 析构函数很特殊 113

11.4 小结 114



第三篇 模 板



第 12章 设计容器类 117

12.1 包含什么 117

12.2 复制容器意味着什么 118

12.3 怎样获取容器的元素 121

12.4 怎样区分读和写 121

12.5 怎样处理容器的增长 123

12.6 容器支持哪些操作 124

12.7 怎样设想容器元素的类型 124

12.8 容器和继承 125

12.9 设计一个类似数组的类 126

第 13章 访问容器中的元素 131

13.1 模拟指针 131

13.2 获取数据 132

13.3 遗留问题 135

13.4 指向const Array的Pointer 139

13.5 有用的增强操作 140

第 14章 迭代器 145

14.1 完成Pointer类 145

14.2 什么是迭代器 148

14.3 删除元素 149

14.4 删除容器 150

14.5 其他设计考虑 151

14.6 讨论 151

第 15章 序列 153

15.1 技术状况 153

15.2 基本的传统观点 154

15.3 增加一些额外操作 159

15.4 使用范例 162

15.5 再增加一些 166

15.6 请你思考 167

第 16章 作为接口的模板 169

16.1 问题 169

16.2 第 一个例子 170

16.3 分离迭代方式 170

16.4 遍历任意类型 172

16.5 增加其他类型 173

16.6 将存储技术抽象化 174

16.7 实证 177

16.8 小结 178

第 17章 模板和泛型算法 179

17.1 一个特例 180

17.2 泛型化元素类型 180

17.3 推迟计数 181

17.4 地址独立性 183

17.5 查找非数组 184

17.6 讨论 185

第 18章 泛型迭代器 187

18.1 一个不同的算法 187

18.2 需求的分类 189

18.3 输入迭代器 190

18.4 输出迭代器 190

18.5 前向迭代器 191

18.6 双向迭代器 191

18.7 随机存取迭代器 192

18.8 是继承吗 193

18.9 性能 193

18.10 小结 194

第 19章 使用泛型迭代器 195

19.1 迭代器类型 196

19.2 虚拟序列 196

19.3 输出流迭代器 199

19.4 输入流迭代器 200

19.5 讨论 204

第 20章 迭代器配接器 205

20.1 一个例子 205

20.2 方向不对称性 207

20.3 一致性和不对称性 208

20.4 自动反向 209

20.5 讨论 211

第 21章 函数对象 213

21.1 一个例子 213

21.2 函数指针 216

21.3 函数对象 218

21.4 函数对象模板 219

21.5 隐藏中间类型 220

21.6 一种类型包罗万象 221

21.7 实现 222

21.8 讨论 224

第 22章 函数配接器 225

22.1 为什么是函数对象 225

22.2 用于内建操作符的函数对象 226

22.3 绑定者(Binders) 227

22.4 更深入地探讨 228

22.5 接口继承 229

22.6 使用这些类 230

22.7 讨论 231



第四篇 库



第 23章 日常使用的库 235

23.1 问题 235

23.2 理解问题:第 1部分 237

23.3 实现:第 1部分 237

23.4 理解问题:第 2部分 239

23.5 实现:第 2部分 240

23.6 讨论 242

第 24章 一个库接口设计实例 243

24.1 复杂问题 244

24.2 优化接口 245

24.3 温故知新 246

24.4 编写代码 247

24.5 小结 249

第 25章 库设计就是语言设计 251

25.1 字符串 251

25.2 内存耗尽 252

25.3 复制 255

25.4 隐藏实现 257

25.5 缺省构造函数 259

25.6 其他操作 260

25.7 子字符串 262

25.8 小结 263

第 26章 语言设计就是库设计 265

26.1 抽象数据类型 265

26.2 库和抽象数据类型 266

26.3 内存分配 269

26.4 按成员赋值(memberwise assignment)和初始化 270

26.5 异常处理 272

26.6 小结 272



第五篇 技 术



第 27章 自己跟踪自己的类 275

27.1 设计一个跟踪类 275

27.2 创建死代码 278

27.3 生成对象的审计跟踪 279

27.4 验证容器行为 281

27.5 小结 286

第 28章 在簇中分配对象 287

28.1 问题 287

28.2 设计方案 287

28.3 实现 290

28.4 加入继承 292

28.5 小结 293

第 29章 应用器、操纵器和函数对象 295

29.1 问题 295

29.2 一种解决方案 297

29.3 另一种不同的解决方案 298

29.4 多个参数 299

29.5 一个例子 301

29.6 简化 302

29.7 思考 303

29.8 历史记录、参考资料和致谢 304

第30章 将应用程序库从输入输出中分离出来 305

30.1 问题 305

30.2 解决方案1:技巧加蛮力 306

30.3 解决方案2:抽象输出 307

30.4 解决方案3:技巧而无蛮力 309

30.5 评论 311



第六篇 总 结



第31章 通过复杂性获取简单性 315

31.1 世界是复杂的 315

31.2 复杂性变得隐蔽 316

31.3 计算机也是一样 316

31.4 计算机解决实际问题 317

31.5 类库和语言语义 318

31.6 很难使事情变得容易 319

31.7 抽象和接口 320

31.8 复杂度的守恒 321

第32章 说了Hello world后再做什么 323

32.1 找当地的专家 323

32.2 选一种工具包并适应它 324

32.3 C的某些部分是必需的 324

32.4 C的其他部分不是必需的 325

32.5 给自己设一些问题 327

32.6 小结 329

附录 Koenig和Moo夫妇访谈 331

C++沉思录 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:C++沉思录