Absolute C++中文版(原书第2版)
作者 : Walter Savitch
译者 : 江山 等
丛书名 : C++设计新思维
出版日期 : 2007-05-10
ISBN : 7-111-20945-4
定价 : 75.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 616
开本 : 16开
原书名 : Absolute C++ Second Edition
原出版社: Addison Wesley
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是一本全面、易用的C++编程语言教程。作者用清晰、简洁的风格讲解概念和技术,帮助读者掌握控制结构、函数、数组、指针和串、类和数据抽象、运算符重载、文件处理以及数据结构等关键内容。每章中间的自测练习、章末的编程练习、丰富的实例、大量的代码等,都为读者提供了掌握C++编程概念所必需的实战演练。

本书主要特点:
  ● 全面介绍标准模板库(STL)。STL是理解C++语言的要素,体现了C++丰富的功能性和多样性。
  ● 涵盖高级C++主题,包括虚函数、模板和异常。
  ● 讲述继承、多态和封装。
  ● 讨论统一建模语言(UML)和设计模式。
  ● 提供完整的教学支持资源:http://www.aw-bc/savitch。

图书特色

图书前言

本书是关于C++语言程序设计的教程和参考书。本书主要是围绕C++语言的特点来组织的,虽然包括一些编程技术,但不是针对编程技术的详细课程。本书的目标读者是那些并没有太多C++语言编程经验的本科生,因此,本书适合作为使用C++语言的计算机课程的教材和参考书,适用于不同层次的读者。开始的章节是为入门级读者准备的,其中许多小节向有经验的程序员介绍了基本的C++语法。后续的章节对初学者也是易于理解的,但主要是为那些希望掌握更高级主题的学生准备的(对于那些需要包含更多教学材料以及更多基本编程技术的入门级教材的读者,我推荐我编写的另一本书:Problem Solving with C++: The Object of Programming,第5版,Addison-Wesley)。本书也适合任何自学C++语言的读者。
  本书所包含的C++内容非常全面,超出了初学者应该掌握的范围。特别是,本书详细介绍了C++中的继承、多态、异常处理以及标准模板库(STL),同时还包含模式和统一建模语言(UML)的介绍。
  第2版的变化
  本书第2版的内容和介绍的顺序与第1版并无二致。如果教师已经在教学中使用本书第1版,可以继续教授而无需做出改变。第2版在行文语言和代码的组织上更有条理,但内容变化不大。
  本书第2版显著扩充并改进了每一章结尾的编程练习,全书共有超过50个新的编程练习。同时,部分编程练习还全面整合到CodeMate(Addison-Wesley的在线教学和课后作业资源)中。
  ANSI/ISO C++标准
  本书的内容完全符合最新的ANSI/ISO C++标准。
  标准模板库
  标准模板库(STL)是一个包含编程前数据结构类和算法的扩展库。STL本身就是一个和C++语言同样大的主题,因此本书非常充分地介绍了STL,分别用一章的篇幅介绍了一般模板和STL的特色,同时也提供了其他与STL相关的资料。
  面向对象的编程
  本书是围绕C++语言的结构来组织的,同其他高级编程语言一样,本书的开始章节是针对编程的普通概念,而不是专门针对面向对象的编程(OOP)。这使本书可以作为参考书和学习第二编程语言的教材。但是,考虑到C++是一门面向对象的编程语言,因此,如果读者要用C++而不是C语言编程,就必须利用C++语言的面向对象编程特性。本书覆盖了大量的C++语言实现的封装、继承和多态,最后一章是关于模式和UML的,也包括与OOP相关的材料。
  灵活安排的主题
  本书允许指导教师灵活地重新安排教学材料,如果将本书作为参考书,这一点很重要。这也符合我的写作初衷—使内容适应教师的风格,而不是将教师限制在我个人的内容安排偏好上。在这种思想的指导下,我在每个章节前面的介绍中概述了本章所包含的内容。
  便于学生理解接受
  对一本书来说,仅仅按照正确的顺序罗列恰当的主题是不够的,甚至仅有内容的清楚和正确也是不够的。书的内容必须以一种初学者易接受的方式来表达。和其他我编写的受到学生们欢迎的教材一样,本书也是按照适合学生阅读和理解的方式来编写的。
  总结框
  每个主要的知识点都在一个方框中进行了总结。每章都有这些方框,既是内容的总结,也是快速的语言参考,同时还可以让那些通晓一般编程规则,但需要知道C++语言特点的读者快速学习C++语法。
  自测练习
  每一章都包含有大量的自测练习,完整的答案附在每一章的最后。
  其他特色
  书中还穿插了许多易犯错误小节、编程技巧小节以及包含输入/输出的示例程序。每一章的最后都有一个总结,以及适合学生练手的编程练习。
  CodeMate在线教学资源
  CodeMate是一个在线资源,它能提供教学帮助并对学生的编程练习实践进行评估。本书的代码演示以及部分编程练习已经完全整合到CodeMate中。使用CodeMate,学生可以获得与编程练习相关的提示,编写并编译程序,获取如何解决编译器错误消息的反馈,而所有这些通过一台可访问因特网的计算机即可完成。教师可以跟踪每位学生在编程练习上的进展。有关CodeMate的更多信息,请访问
http://www.aw-bc.com/codemate
  支持材料
  有些支持材料面向所有读者开放,有些材料则只有授权的教师才可获得。
所有读者可获得的材料
  ·自测题集
  ·书中程序的源代码
  ·PowerPoint幻灯片
  要获得这些学生支持材料,请访问
  http://www.aw-bc.com/savitch
  授权的教师可获得的资料
  以下是经过授权的教师才可获得的资料。要获悉如何访问这些教师资料,请联系当地的Addison-Wesley销售代表或发送电子邮件到aw.cse@aw.com 。
  ·访问Addison-Wesley的CodeMate。
  ·教师资源手册—包括每一章的教学提示、测试题和解答以及众多编程练习的解决方案。
  ·测试题库和测试生成器。
  ·PowerPoint教案,包括书中的程序和图片。
  电子邮件交流
  我非常希望听到读者对本书的任何评论,这样我就有动力去改善本书来进一步满足大家的需要。请将评论发至wsavitch@ucsd.edu。
  我想知道的是读者对本书的评价和修改意见,不过,我不打算向学生提供电子邮件咨询或教学服务,因为我收到的此类邮件实在是太多了。特别是,我无法对本书中的练习提供解答,或对你的老师提供的练习进行解答。作为对期待此类帮助的读者的一些补偿,本书对所有的“自测练习”都提供了解答。教师手册提供了一些“编程练习”的解答,但这些材料只向采用本书作为教材的教师提供,而不能分发给学生。
  致谢
  为了本书的出版,许多人提供了宝贵的帮助和支持。Addison-Wesley公司的Frank Ruggirello和Susan Hartman最先提出了本书的写作构想并促成了第1版的面世,我对他们及本书第2版的编辑Matt Goldstein充满了感激之情。我还要感谢Michelle Brown、Katherine Harutunian、Joyce Wells以及Addison-Wesley公司的所有其他工作人员,感谢他们无私的支持和鼓励。
  在此要特别感谢Addison-Wesley公司的Patty Mahtani,是她的大力支持和鼓励使得本书得以顺利付印。还有Daniel Rausch、Meghan James以及Argosy 出版公司的工作人员,感谢他们在本书的录入、排版等生产环节上做了大量重要的工作。
  我要特别地感谢Kenrick Mock帮忙编写了许多精彩的新的编程练习,并更新了教师手册。我尤其感谢David Teague,他对本书第1版做了细致的审查和研究工作。同时,感谢我的好朋友Mario Lopez,他和我进行了大量有益的关于C++的交流。
  以下人员对本书第2版提出了建议,在此感谢他们的努力工作和有益的意见:Victoria Rayskin,Central Los Angeles大学;Jerry K. Bilbrey, Jr,Francis Marion大学;Albert M. K. Cheng,休斯顿大学;Tim Lin,加利福尼亚工艺学院,Pomona;Ron DiNapoli,康奈尔大学;R. M. Lowe,Clemson大学;Martin Dulberg,北卡罗来那州立大学;Jeffrey L. Popyack,Drexel大学。
  以下人员对本书第1版提出了勘误和建议,在此感谢他们的努力工作和有益的意见:Kenrick Mock,阿拉斯加大学,安克雷奇;Richard Albright,特拉华大学;H. E. Dunsmore,普度大学;Christopher E. Cramer;Drue Coles,波士顿大学;Evan Golub,马里兰大学;Stephen Corbesero,Moravian学院;Fredrick H. Colclough,科罗拉多理工大学;Joel Weinstein,东北大学;Stephen P. Leach,佛罗里达州立大学;Alvin S. Lim,厄本大学;Martin Dulberg,北卡罗来那州立大学。
  W. S.
  http://www-cse.ucsd.edu/users/savitch/
  wsavitch@ucsd.edu

封底文字

本书是一本全面、易用的C++编程语言教程。作者用清晰、简洁的风格讲解概念和技术,帮助读者掌握控制结构、函数、数组、指针和串、类和数据抽象、运算符重载、文件处理以及数据结构等关键内容。每章中间的自测练习、章末的编程练习、丰富的实例、大量的代码等,都为读者提供了掌握C++编程概念所必需的实战演练。 本书主要特点: ● 全面介绍标准模板库(STL)。STL是理解C++语言的要素,体现了C++丰富的功能性和多样性。 ● 涵盖高级C++主题,包括虚函数、模板和异常。 ● 讲述继承、多态和封装。 ● 讨论统一建模语言(UML)和设计模式。 ● 提供完整的教学支持资源:http://www.aw-bc/savitch。

图书序言

Walter Savitch  加州大学圣迭戈分校计算机科学与工程系教授,于1969年在加州大学伯克利分校获得博士学位。他的研究领域包括复杂性理论、形式语言理论以及计算语言学等。除了为数众多的研究论文外,他还著有多部计算机科学教材,包括《Absolute Java》、《Problem Solving with C++》和《Java: An Introduction to Computer Science and Programming》等。

作者简介

Walter Savitch:Walter Savitch:  加州大学圣迭戈分校计算机科学与工程系教授。他于1969年在加州大学伯克利分校获得博士学位。他的研究领域包括复杂性理论、形式语言理论、计算语言学等。除了为数众多的研究论文外,他还著有多部计算机科学教材,包括《Absolute Java》、《Problem Solving with C++》、《Java: An Introduction to Computer Science and Programming》等。

译者简介

江山 等:暂无简介

译者序

说起程序设计语言,C++可谓大名鼎鼎,不仅因为其内容博大精深,更因其在业界的广为使用。当然,这也导致了市场上C++书籍的泛滥。实际上很多C++书籍都相当一般,没有特色或不易研读。好书不是没有,较早的如C++之父Bjarne Stroustrup所著的《C++程序设计语言》,较近的有《C++ Primer》(现在是第4版)和《Effective C++》,这些都是精品,但却稀有。反观本书,它没有上面这几本书那样显赫或具有特色,但却十分朴实。全书循序渐进,深入浅出地介绍了C++的各个主题,可以很好地帮助读者成为一名优秀的C++程序员,而且不要求读者事先对C++有太多了解。
  本书的好用、实用离不开作者Walter Savitch教授的精心组织,这位加州大学圣迭戈分校的教授除了在计算领域做出重要的学术贡献外,还著有一系列编程语言教材(国内大都已经引进),受到普遍欢迎,畅销不衰。Savitch教授是一位真正难得的教材作者,读他的书你会发现,书中其实没有什么惊人的观点(从目录上就能看出来),但他却能充分考虑读者和学生的学习方式,将内容安排得井井有条,深浅有序,极具可读性。就本书而言,除了系统、全面的内容介绍外,还给出了大量代码示例、自测练习、编程提示和编程练习,并且提供了练习的解答。编程练习是这本书的一个亮点,并不是每本书都能提供这方面的编程项目,而且本书还在相关网站提供解决方案,这对我们的实际编程尤其具有指导意义。尽快地掌握这些编程经验,将有助于编程初学者养成良好的编程习惯,即使是具备相当编程经验的人员,也可以从本书了解到使用C++的更有效方法。
  本书有几个特点值得强调:
  ·内容全面。本书所包含的C++内容非常全面,充分考虑了不同水平的读者需要。特别是本书详细介绍C++中的继承、多态、异常处理和标准模板库(STL),同时还包含了模式和UML的介绍。
  ·要点总结。每个主要的知识点都在文中单独进行总结,这既是内容的总结,也是快速的语言参考。贯穿每一章,还有“陷阱”、“编程技巧”、“提示”等经验小结,有利于读者深入理解知识点。
  ·强调编程实践。这一点上面已经提到,除了一般意义上的教学示例外,本书在每一章末尾提供了大量编程练习,实际做一下这些练习题具有深远的意义。
  ·代码示例关注细节。本书为代码段配有极为丰富的注释和说明文字,而不是简单地堆砌代码,这十分难得,使得书中的代码非常易于阅读和理解。
  总之,本书无论是作为正式教材还是自学用书,都非常适合。如果您是教师,想找一本合适的C++语言教材,或者您是一位自学者,想从零起步成为一名专业的C++程序员,我们都郑重向您推荐本书。
  本书的翻译和统稿工作主要由江山完成,另外,刘洞宾、方亮、李璐等人参与了部分章节的翻译工作。由于时间仓促,加之译者的水平有限,在翻译过程中难免会出现错误和疏漏,恳请广大读者批评指正。

图书目录

译者序
前言
第1章  C++基础 1
1.1  C++简介 1
1.1.1  C++语言的起源 1
1.1.2  C++与面向对象的程序设计 1
1.1.3  C++的特点 2
1.1.4  C++术语 2
1.1.5  C++程序示例 2
1.2  变量、表达式及赋值语句 4
1.2.1  标识符 4
1.2.2  变量 5
1.2.3  赋值语句 6
1.2.4  更多赋值语句 8
1.2.5  赋值兼容性 9
1.2.6  字面常量 10
1.2.7  转义序列 11
1.2.8  命名常量 12
1.2.9  算术操作符和表达式 13
1.2.10  整数和浮点数除法 14
1.2.11  类型转换 15
1.2.12  自增和自减操作符 16
1.3  控制台输入/输出 19
1.3.1  使用cout输出  19
1.3.2  输出时换行 20
1.3.3  格式化带小数点的数字 21
1.3.4  用cerr输出 22
1.3.5  用cin输入 22
1.4  程序的风格 23
1.5  库与命名空间 24
1.5.1  库与include命令 24
1.5.2  命名空间 25
第2章  流程控制 30
2.1  布尔表达式 30
2.1.1  创建布尔表达式 30
2.1.2  布尔表达式求值 31
2.1.3  优先级原则 33
2.2  分支机制 37
2.2.1  if-else语句 37
2.2.2  复合语句 38
2.2.3  省略else 40
2.2.4  嵌套语句 40
2.2.5  多分支if-else语句 41
2.2.6  switch语句 42
2.2.7  枚举类型 44
2.2.8  条件操作符 44
2.3  循环 45
2.3.1  while和do-while语句 45
2.3.2  再谈增量、减量操作符 47
2.3.3  逗号操作符 49
2.3.4  for语句 50
2.3.5  break与continue语句 55
2.3.6  嵌套循环 57
第3章  函数基础 63
3.1  预定义函数 63
3.1.1  返回值的预定义函数 63
3.1.2  预定义的void函数 66
3.1.3  随机数生成器 68
3.2  程序员定义的函数 71
3.2.1  定义返回值的函数 71
3.2.2  函数声明的替代形式 73
3.2.3  调用函数的函数 73
3.2.4  返回布尔值的函数 75
3.2.5  定义void函数 76
3.2.6  void函数中的return语句 77
3.2.7  前提条件和执行结果 78
3.2.8  main函数 79
3.2.9  递归函数 79
3.3  作用域规则 80
3.3.1  局部变量 80
3.3.2  过程抽象 82
3.3.3  全局常量与全局变量 83
3.3.4  语句块 84
3.3.5  嵌套作用域 85
3.3.6  for循环中声明的变量 85
第4章  参数与重载 92
4.1  参数 92
4.1.1  传值调用参数 92
4.1.2  引用调用参数初步 94
4.1.3  引用调用机制详解 95
4.1.4  常量引用参数 97
4.1.5  混合参数列表 99
4.2  重载与默认实参 104
4.2.1  重载简介 104
4.2.2  分辨重载的准则 107
4.2.3  默认实参 109
4.3  测试及调试函数 111
4.3.1  assert宏 111
4.3.2  占位程序和驱动程序 112
第5章  数组 119
5.1  数组简介 119
5.1.1  数组的声明和引用 119
5.1.2  内存中的数组 122
5.1.3  数组的初始化 124
5.2  函数中的数组 125
5.2.1  作为函数实参的索引变量 125
5.2.2  整个数组作为函数实参 126
5.2.3  const参数修饰词 129
5.2.4  返回一个数组的函数 130
5.3  用数组编程 134
5.4  多维数组 141
5.4.1  多维数组基础 141
5.4.2  多维数组参数 142
第6章  结构和类 155
6.1  结构 155
6.1.1  结构类型 156
6.1.2  结构作为函数参数 159
6.1.3  结构的初始化 162
6.2  类 163
6.2.1  定义类和成员函数 163
6.2.2  封装 168
6.2.3  公有和私有成员 168
6.2.4  取值和赋值函数 171
6.2.5  结构和类 174
第7章  构造函数及其他工具 179
7.1  构造函数 179
7.1.1  构造函数的定义 179
7.1.2  构造函数的显式调用 183
7.1.3  类类型成员变量 190
7.2  其他工具 193
7.2.1  const参数修饰词 193
7.2.2  内联函数 198
7.2.3  静态成员 199
7.2.4  嵌套类和局部类定义 201
7.3  向量—标准模板库预览 202
7.3.1  向量基础 202
7.3.2  效率问题 205
第8章  操作符重载、友元和引用 210
8.1 基本操作符重载 210
8.1.1  重载基础 210
8.1.2  返回常量类型 215
8.1.3  重载一元操作符 218
8.1.4  作为成员函数的操作符重载 218
8.1.5  重载函数调用符 220
8.2  友元函数和自动类型转换 221
8.2.1  构造函数的自动类型转换 221
8.2.2  友元函数 222
8.2.3  友元类 225
8.3  引用和其他操作符重载 226
8.3.1  引用 226
8.3.2  重载“《”和“》” 228
8.3.3  赋值操作符 234
8.3.4  重载自增和自减操作符 235
8.3.5  重载数组操作符[] 237
8.3.6  基于左值和右值的重载 238
第9章  字符串 243
9.1  数组类型的字符串 243
9.1.1  C字符串值和C字符串变量 243
9.1.2 cstring 库中的其他函数 247
9.1.3  C字符串的输入和输出 250
9.2  字符操作工具 252
9.2.1  字符输入/输出 252
9.2.2  成员函数get和put 252
9.2.3  成员函数putback、peek和ignore 257
9.2.4  字符操作函数 258
9.3  标准string类 261
9.3.1  标准类string简介 261
9.3.2  string类的输入/输出 263
9.3.3  使用string类进行字符串处理 267
9.3.4  string类对象和C字符串的相互转换 273
第10章  指针和动态数组 280
10.1  指针 280
10.1.1  指针变量 280
10.1.2  内存管理基础 287
10.1.3  动态变量和自动变量 289
10.1.4  指针的应用 292
10.2  动态数组 292
10.2.1  数组变量和指针变量  292
10.2.2  创建和使用动态数组 294
10.2.3  指针运算 298
10.2.4  多维动态数组 299
10.3  类、指针和动态数组 300
10.3.1  ->操作符 301
10.3.2  this指针 301
10.3.3  重载赋值操作符 302
10.3.4  析构函数 309
10.3.5  复制构造函数 310
第11章  分散编译和命名空间 318
11.1  分散编译 318
11.1.1  封装回顾  318
11.1.2  头文件和实现文件 319
11.1.3  使用#ifndef 326
11.2  命名空间 329
11.2.1 命名空间和using命令 329
11.2.2 创建一个命名空间 330
11.2.3 using声明 333
11.2.4 限定名字 334
11.2.5 未命名的命名空间 337
11.2.6  嵌套命名空间 342
第12章  流和文件I/O操作 349
12.1  I/O流 349
12.1.1  文件I/O 350
12.1.2  向文件中添加内容 353
12.1.3  字符I/O 357
12.1.4  文件末尾检查 357
12.2  流I/O的工具 361
12.2.1  文件名作为输入 361
12.2.2  使用流函数对输出格式化 361
12.2.3  操作算子 364
12.2.4  保存设定的标记 365
12.2.5  其他的输出流成员函数 365
12.3  流的层次:继承的简要介绍 370
12.4  随机文件存取 375
第13章  递归 384
13.1  递归void函数 384
13.1.1  一个递归调用的跟踪 386
13.1.2  递归的进一步认识 388
13.1.3  递归调用的栈 391
13.1.4  递归与迭代的比较 392
13.2  有返回值的递归函数 393
13.3  按递归方式思考问题 397
13.3.1  递归设计技术 397
13.3.2  二分查找 398
13.3.3  编码 400
13.3.4  检查递归的正确性 402
13.3.5  效率 402
第14章  继承 410
14.1  继承基础 410
14.1.1  派生类 410
14.1.2  派生类的构造函数 417
14.1.3  protected限定词 420
14.1.4  成员函数的重定义 422
14.1.5  重定义与重载 423
14.1.6  访问重定义函数的基类版本 424
14.1.7  不可继承的函数 425
14.2  使用继承进行编程 426
14.2.1  派生类中的赋值操作符和复制
构造函数 426
14.2.2  派生类的析构函数 426
14.2.3  保护继承和私有继承 436
14.2.4  多继承 437
第15章  多态与虚函数 442
15.1  虚函数基础 442
15.1.1  后绑定 442
15.1.2  C++中的虚函数 443
15.1.3  抽象类和纯虚函数 448
15.2  指针和虚函数  451
15.2.1  虚函数和扩展类型兼容性  451
15.2.2  向下转换和向上转换 456
15.2.3  C++如何实现虚函数 457
第16章  模板 461
16.1  函数模板 461
16.2  类模板 471
16.2.1  类模板的语法 471
16.2.2  C++中的模板类vector和
basic_string 478
16.3  模板和继承 478
第17章  链式数据结构 487
17.1  节点和链表 487
17.1.1  节点 487
17.1.2  链表 491
17.1.3  向链表头插入一个节点 492
17.1.4  向链表中插入或移除节点 495
17.1.5  搜索链表 498
17.2  链表的应用 504
17.3  迭代器 514
17.3.1  指针作为迭代器 514
17.3.2  迭代器类 515
17.4  树 520
第18章  异常处理 535
18.1  异常处理基础 535
18.1.1  异常处理的一个样例 535
18.1.2  自定义异常类 542
18.1.3  多重抛出和捕获 543
18.1.4  在函数中抛出异常 546
18.1.5  异常说明 547
18.2  异常处理的编程技术 549
18.2.1  抛出异常的时机 549
18.2.2  异常类的层次结构 552
18.2.3  测试可用内存 552
18.2.4  再次抛出异常 552
第19章  标准模板库 555
19.1  迭代器 555
19.1.1  迭代器基础 556
19.1.2  迭代器的种类 559
19.1.3  常量迭代器和可变迭代器 562
19.1.4  反向迭代器 563
19.1.5  其他几种迭代器 565
19.2  容器 566
19.2.1  连续容器  566
19.2.2  容器适配器栈和队列 570
19.2.3  关联容器集合和映射 572
19.2.4  效率 575
19.3  泛型算法 576
19.3.1  运行时间和大O记法 576
19.3.2  容器访问运行时间 580
19.3.3  不改变序列的算法 580
19.3.4  改变序列的算法 583
19.3.5  集合算法 584
19.3.6  排序算法 585
第20章  模式和UML 592
20.1  模式 592
20.1.1  适配器模式 592
20.1.2  模型-视图-控制器模式 593
20.1.3  排序模式的效率 598
20.1.4  模式形式体系 599
20.2  UML 600
20.2.1  UML的历史 600
20.2.2  UML的类图表 600
20.2.3  类的相互作用 601
附录1  C++关键字 605
附录2  操作符优先级 606
附录3  ASCII字符集 608
附录4  一些库函数 609
附录5  旧的和新的头文件 614
参考资料 615

教学资源推荐
作者: (美)H.M.Deitel
作者: (美)Barry Wilkinson, Michael Allen
作者: 辛运帏 高宁 徐文拴 等编著
作者: (美)Delores M. Etter; Jeanine A. Ingber 著
参考读物推荐
作者: [美] 马克·威廉姆斯(Mark Williams)[英] 科里·本菲尔德(Cory Benfield) [美]布莱恩·华纳(Brian Warner) [美]摩西·扎德卡(Moshe Zadka) [美]达斯汀·米切尔(Dustin Mitchell) [法]凯文·塞缪尔(Kevin Samuel) [法]皮埃尔·塔迪(Pierre Tardy) 著
作者: 黄永祥 编著
作者: Rogers Cadenhead