C和C++代码精粹
[特价中]基本信息
- 原书名: C & C++ Code Capsules
- 原出版社: Prentice Hall PTR
- 作者: Chuck Allison
- 译者: 董慧颖
- 丛书名: C和C++实务精选
- 出版社:人民邮电出版社
- ISBN:7115106258
- 上架时间:2003-5-9
- 出版日期:2003 年4月
- 开本:16开
- 页码:536
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > C++
合作专区 > 微软技术图书 > 微软程序设计 > 微软C/C++/VC++
推荐阅读
内容简介回到顶部↑
本书基于作者备受好评的C/C++ User Journal杂志上的每月专栏,通过大量完全符合ISO标准C++的程序集合,说明了C++真正强大的威力,是C和C++职业程序员的实践指南。
全书分为3篇共20章,分别从指针、预处理器、C标准库、抽象、模板、异常、算法、容器、文件处理、动态内存管理等不同层次的话题展开讨论。书中的精粹代码,对于C和C++程序员具有很好的使用价值和启发意义。
本书可以帮助有一定经验的C和C++程序员深入学习这两种密切相关的语言,对书中代码的参悟和应用,可以帮助他们从根本上提高使用程序的效率。
全书分为3篇共20章,分别从指针、预处理器、C标准库、抽象、模板、异常、算法、容器、文件处理、动态内存管理等不同层次的话题展开讨论。书中的精粹代码,对于C和C++程序员具有很好的使用价值和启发意义。
本书可以帮助有一定经验的C和C++程序员深入学习这两种密切相关的语言,对书中代码的参悟和应用,可以帮助他们从根本上提高使用程序的效率。
目录回到顶部↑
第一部分 预备知识
第1章 更好的c 3
1.1 两种语言简述 3
1.2 循序渐进 4
1.3 类型系统 4
1.4 函数原型 5
1.5 类型安全连接 9
1.6 引用 10
1.7 类型安全i/o 11
1.8 标准流 12
1.9 格式化 14
1.10 操纵器 18
1.11 函数重载和函数模板 22
1.12 运算符重载 22
1.13 内联函数 24
1.14 缺省参数 25
1.15 new和delete 26
1.16 语句声明 26
1.17 标准库特征 27
1.18 c的兼容性 27
第1章 更好的c 3
1.1 两种语言简述 3
1.2 循序渐进 4
1.3 类型系统 4
1.4 函数原型 5
1.5 类型安全连接 9
1.6 引用 10
1.7 类型安全i/o 11
1.8 标准流 12
1.9 格式化 14
1.10 操纵器 18
1.11 函数重载和函数模板 22
1.12 运算符重载 22
1.13 内联函数 24
1.14 缺省参数 25
1.15 new和delete 26
1.16 语句声明 26
1.17 标准库特征 27
1.18 c的兼容性 27
前言回到顶部↑
本书适合于那些C和C++的职业程序员。假如你已熟悉这两种语言的语法和基本结构,这本书能够为你创建有效的、实用的程序提供实践性的指导。每一个代码范例或程序范例均标明行之有效的用法和技术,这些用法和技术对C/C++这两种重要编程语言的性能发挥起着重要的作用。
对于那些希望在工作中加强自身技术和提高效率的人来说,本书可以算是一本经验之谈。尽管目前人们对面向对象模式的推崇到了白热状态(本书也包括这方面的丰富内容),可是我没有理由不对C++的基础——C表示尊崇。我发现太多的程序开发者由于培训不当而不能掌握C++,因为他们缺乏对一些基本概念如指针、作用域、连接和静态类型检查的全面理解,也许所有这些之中最大的缺陷就是缺乏对标准C库的熟悉。开发者浪费了大量时间去编写库中已提供的函数确实令人感到悲哀。那些C++的新手因为热衷C++的那些“令人兴奋”的特征,如继承、异常或重载运算符new,甚至当一些特征还没有得到验证的时候就迫不及待地放弃了简单的C语言。我深信每个人都可以从本书中学到一些东西。严格地说,第1章和第13-16章讲的都是C++,第4~6章讲的仅仅是C语言,而所有其他章节则包含了与C和C++各自主题都相关的内容。
可以说,这主要是一本关于C++的书。当本书(指出版于1998年的英文原书)要印刷的时候,C++标准化的努力已进入最后冲刺中,第二届公共委员会草案(CD2)的整套方案已经完成,仅剩下次要的编辑工作。我自1991年初作为该委员会的成员以来,目睹了标准化的文档从200页增加到750多页。我们已在语言中加入了异常、模板、名宇空间、运行期类型识别(RTTI)以及其他一些特征,而在库(通常称作标准模板库或STL)中加入了复杂的。相互关联算法的模板化系统、容器以及送代结构。与其他标准化的努力方向不同,委员会对新发明和标准化现存的实践同等重视。C++的过于复杂引起了一个网上冲浪者发表了下面的观点:“如果C语言给了你足够长的绳子让你上吊,那么C++则给了你更长的绳子,足够让你周围的每一个人上吊,还够你升起一艘小帆船的帆,剩余的还够让你上吊”。我不辞辛苦地用这种方法说明并解释标准C++和它的库,就是希望你可以更明智地运用你的绳子。
“C++标准的制定”是我对Bjarne Stroustrup采访的摘录,记录了他对 C++成为标准的感受。本书的其他部分则分成了3个部分。
第一部分:基础篇
在对C++作了简短的介绍之后,这些章节弥补C程序员在准备使用C++之前可能存在的差距。第2章“指针”基于我在1993年的C Users Journal上发表后反响不错的三个系列,第4章到第6章包含了每个职业程序员都应该知道的标准C库,这是标准C++极其重要的一部分。
第二部分:关键概念
这一部分详尽地揭示和阐述了C++语言的概念和特征。第7章通过类介绍数据抽象;第8章覆盖了由C++模板机制实现的类型抽象,模板对有效地使用C++来说和对象一样重要,甚至可能更重要;第14章不仅论述了继承和多态,也说明了面向对象的设计和重用,如使用当个关系数据库管理系统的用于对象持久性框架的描述。中间的章节深入介绍了许多开发者都容易忽略的重要基本概念。
第三部分:标准库的强大作用
第15章到第20章介绍了如何使用和享受标准 C++库卓越的组件,同时还阐明了在第4、5、6章范围之外的标准C库的一些更为复杂的特征:第15章和第16章解释了作为C++库子集的STL库为什么会是这样,以及如何有效地使用它;第19章包含了一个有用的甚至能够处理部分日期的日期组件,可以满足普通的商业数据处理的需要。
总之,这是一本关于如何编程的书,我已尝试通过深度和广度的合理平衡来说明“最好的实践”,引导读者放弃“已经掌握了C++”的想法。这本书在标准委员会通过ISO C++的最终草案仅一周之后就付诸印刷,而我已经谨慎地避免了继续存在的任何死角(所有的语言和环境都有)。我自信本书中的所有材料在未来几年中都是适用的。
致谢
此书的实际写作时间比我的计划多花了很多年。写作始于1984年,当时我正担任亚利桑那州图森市皮玛社区学院计算机科学系主任,我的同事Claire Hamlet劝我在那儿开设用C语言编程的第一门课程。从此我开始收集C程序的例子,并与在Hughes Aircraft公司和在盐湖城Church of Jesus Christ of Latter-day Saints的世界总部的一些雇员们共同分享。“代码精粹”(code capsules),即关于特殊主题带有例子的短小程序,源自于我努力使COBOL“受难者”在学习C时感到有趣并且不枯燥。我足够幸运的是在担任C语言支持委员会主席的时候,曾一度得到了委员会管理上的支持,该委员会有一支经验丰富的一流的程序员队伍(David Coombs、John Pearson、Lonn Lords、Kent Olsen、Bill Owens、Drew Terry以及Mike Terrazas),是他们开发了这样顶尖的课程并有效地培训了100多名Church雇员。
“代码精粹”这个名字是在我跟Lee Copeland在Church食堂吃早餐时想到的(他使我有了准备行动的路线)。Mike Terrazas审查这些短小程序的早期版本,并建议我把它们发表在C Users Journal上,这些都是1992年 3月在伦敦举行的 C++标准化委员会会议上,我将这些短小程序展示给P.J.Bill是不经意的,作为一位资深的编辑,他提议我成为这一期刊的专栏作者。“代码精粹”这一专栏从1992年10月开办直至1995年5月,后来我由于时间有限而不得不放弃。令人钦佩的良师益友Bill在鼓励我将这些代码精粹整理成书方面起了很大作用。Bruce Eckel欣然阅读了本书的部分内容,Pete Becker通览了全部的手稿,去掉了一些错误和不一致的内容。然而,当提及那种所需的无形的精神动力时,我必须像几乎每一位作者那样对我的家人表示感谢,只有Sandy、James和Kim才能体会到为了将本书出版大家所付出的巨大努力。对岁的James最近从他呆了两年的英格兰来信说:“终于,爸爸完成了他的著作!他从我记事起就一直做这项工作。”
Chuck Allison
http://www.freshsources.com
1997年11月
对于那些希望在工作中加强自身技术和提高效率的人来说,本书可以算是一本经验之谈。尽管目前人们对面向对象模式的推崇到了白热状态(本书也包括这方面的丰富内容),可是我没有理由不对C++的基础——C表示尊崇。我发现太多的程序开发者由于培训不当而不能掌握C++,因为他们缺乏对一些基本概念如指针、作用域、连接和静态类型检查的全面理解,也许所有这些之中最大的缺陷就是缺乏对标准C库的熟悉。开发者浪费了大量时间去编写库中已提供的函数确实令人感到悲哀。那些C++的新手因为热衷C++的那些“令人兴奋”的特征,如继承、异常或重载运算符new,甚至当一些特征还没有得到验证的时候就迫不及待地放弃了简单的C语言。我深信每个人都可以从本书中学到一些东西。严格地说,第1章和第13-16章讲的都是C++,第4~6章讲的仅仅是C语言,而所有其他章节则包含了与C和C++各自主题都相关的内容。
可以说,这主要是一本关于C++的书。当本书(指出版于1998年的英文原书)要印刷的时候,C++标准化的努力已进入最后冲刺中,第二届公共委员会草案(CD2)的整套方案已经完成,仅剩下次要的编辑工作。我自1991年初作为该委员会的成员以来,目睹了标准化的文档从200页增加到750多页。我们已在语言中加入了异常、模板、名宇空间、运行期类型识别(RTTI)以及其他一些特征,而在库(通常称作标准模板库或STL)中加入了复杂的。相互关联算法的模板化系统、容器以及送代结构。与其他标准化的努力方向不同,委员会对新发明和标准化现存的实践同等重视。C++的过于复杂引起了一个网上冲浪者发表了下面的观点:“如果C语言给了你足够长的绳子让你上吊,那么C++则给了你更长的绳子,足够让你周围的每一个人上吊,还够你升起一艘小帆船的帆,剩余的还够让你上吊”。我不辞辛苦地用这种方法说明并解释标准C++和它的库,就是希望你可以更明智地运用你的绳子。
“C++标准的制定”是我对Bjarne Stroustrup采访的摘录,记录了他对 C++成为标准的感受。本书的其他部分则分成了3个部分。
第一部分:基础篇
在对C++作了简短的介绍之后,这些章节弥补C程序员在准备使用C++之前可能存在的差距。第2章“指针”基于我在1993年的C Users Journal上发表后反响不错的三个系列,第4章到第6章包含了每个职业程序员都应该知道的标准C库,这是标准C++极其重要的一部分。
第二部分:关键概念
这一部分详尽地揭示和阐述了C++语言的概念和特征。第7章通过类介绍数据抽象;第8章覆盖了由C++模板机制实现的类型抽象,模板对有效地使用C++来说和对象一样重要,甚至可能更重要;第14章不仅论述了继承和多态,也说明了面向对象的设计和重用,如使用当个关系数据库管理系统的用于对象持久性框架的描述。中间的章节深入介绍了许多开发者都容易忽略的重要基本概念。
第三部分:标准库的强大作用
第15章到第20章介绍了如何使用和享受标准 C++库卓越的组件,同时还阐明了在第4、5、6章范围之外的标准C库的一些更为复杂的特征:第15章和第16章解释了作为C++库子集的STL库为什么会是这样,以及如何有效地使用它;第19章包含了一个有用的甚至能够处理部分日期的日期组件,可以满足普通的商业数据处理的需要。
总之,这是一本关于如何编程的书,我已尝试通过深度和广度的合理平衡来说明“最好的实践”,引导读者放弃“已经掌握了C++”的想法。这本书在标准委员会通过ISO C++的最终草案仅一周之后就付诸印刷,而我已经谨慎地避免了继续存在的任何死角(所有的语言和环境都有)。我自信本书中的所有材料在未来几年中都是适用的。
致谢
此书的实际写作时间比我的计划多花了很多年。写作始于1984年,当时我正担任亚利桑那州图森市皮玛社区学院计算机科学系主任,我的同事Claire Hamlet劝我在那儿开设用C语言编程的第一门课程。从此我开始收集C程序的例子,并与在Hughes Aircraft公司和在盐湖城Church of Jesus Christ of Latter-day Saints的世界总部的一些雇员们共同分享。“代码精粹”(code capsules),即关于特殊主题带有例子的短小程序,源自于我努力使COBOL“受难者”在学习C时感到有趣并且不枯燥。我足够幸运的是在担任C语言支持委员会主席的时候,曾一度得到了委员会管理上的支持,该委员会有一支经验丰富的一流的程序员队伍(David Coombs、John Pearson、Lonn Lords、Kent Olsen、Bill Owens、Drew Terry以及Mike Terrazas),是他们开发了这样顶尖的课程并有效地培训了100多名Church雇员。
“代码精粹”这个名字是在我跟Lee Copeland在Church食堂吃早餐时想到的(他使我有了准备行动的路线)。Mike Terrazas审查这些短小程序的早期版本,并建议我把它们发表在C Users Journal上,这些都是1992年 3月在伦敦举行的 C++标准化委员会会议上,我将这些短小程序展示给P.J.Bill是不经意的,作为一位资深的编辑,他提议我成为这一期刊的专栏作者。“代码精粹”这一专栏从1992年10月开办直至1995年5月,后来我由于时间有限而不得不放弃。令人钦佩的良师益友Bill在鼓励我将这些代码精粹整理成书方面起了很大作用。Bruce Eckel欣然阅读了本书的部分内容,Pete Becker通览了全部的手稿,去掉了一些错误和不一致的内容。然而,当提及那种所需的无形的精神动力时,我必须像几乎每一位作者那样对我的家人表示感谢,只有Sandy、James和Kim才能体会到为了将本书出版大家所付出的巨大努力。对岁的James最近从他呆了两年的英格兰来信说:“终于,爸爸完成了他的著作!他从我记事起就一直做这项工作。”
Chuck Allison
http://www.freshsources.com
1997年11月
序言回到顶部↑
我第一次听说 Chuck是在1993年3月,当时他的位处理类、bitset和bitstring被标准C++库所采纳(bitstring是在后来加入STL时被吸收的)。虽然我本人间或为C+十标准加进两三个极小的位,但是他那种通过ANSI/ISO C++委员会非常严格的考验成功地运行一个完整的类的想法给我留下了深刻的印象(我们都是委员会成员,均悉内情)。
尽管计算机业界言过其实的事情不乏其例,以致于我必须尴尬地依靠我的直觉而不是智慧来辨别真相。因此,在这个领域中,给我留下较深刻印象的是那些能用简明扼要和不夸张的方式来阐明问题的人,更确切地说,这样的人就是一位了不起的导师。Chuck就是这样的导师。你可以通过他全力所从事的一系列活动,如写作、教学、编辑、答疑中看出这一点。当我发现这类人——当我见到他们对听众演讲时,我便能对他们深信不疑——因此,我说服他们在软件开发Software Development)会议上讲演(我在该会议上担任C++和Java的专题主席)。Chuck已经成为会议上一位定期演讲的固定人物,他令双方的听众都满意。
在最后一次SD会议上(1997年秋,华盛顿DC),当我们得知当天是Chuck的生日后,我们一伙人便邀他出去共进晚餐。全体就座后,我环顾四周,才意识到我们都是技术图书的作者:Bjarne Stroustrup(C++的创始人和The C++ Programming Language一书的作者)、Dan Saks(C++专栏作家、演说家、顾问和ANI/ISO C++委员会长期秘书)、 Bobby Schmidt:(CUJ专栏作家、演讲家)、MarcoCantu(Mastering Delphi一书和C++丛书的作者)、 TimGooch(CobbGroup出版社C++的编辑,现任Java的编辑)以及我本人,这些人都非常敬重Chuck,所以才请他吃晚餐。
当然,C++教程式的书不在少数。我有时感到自己正坚持不懈地在写这样的一本书(我的最终成果是Thinking in C++)。然而,当你已经理解了基础知识并想更加深入时会如何呢?虽然书是有了,但是它们常常是以专家的口吻写的(一种令人瞠目结舌的语言)要不然就是它们所覆盖的主题太深奥莫测。而这本书架起了通往高深主题的桥梁,它给了你所需要的而又不会在前进的过程中难倒你。
Chuck的书写得既明了又准确,准确是我非常喜欢的一件事情。一本书的瑕疵太多会令我厌倦(过去我们不得不容忍这样的书,但现在精心地编写的C++书籍足够多的了,因此没有理由再浪费时间)。我非常喜爱这本书的另一个原因是它的每一章都很简练,每章都集中讲一个主题,你可以很快地领会它并且得到完整的概念(我注意力集中的时间可不很长)。这是一本经得起时间考验的好书,它会带给你一个又一个顿悟。
Bruce Eckel
http://www.EckelObjects.com
1997年10月
尽管计算机业界言过其实的事情不乏其例,以致于我必须尴尬地依靠我的直觉而不是智慧来辨别真相。因此,在这个领域中,给我留下较深刻印象的是那些能用简明扼要和不夸张的方式来阐明问题的人,更确切地说,这样的人就是一位了不起的导师。Chuck就是这样的导师。你可以通过他全力所从事的一系列活动,如写作、教学、编辑、答疑中看出这一点。当我发现这类人——当我见到他们对听众演讲时,我便能对他们深信不疑——因此,我说服他们在软件开发Software Development)会议上讲演(我在该会议上担任C++和Java的专题主席)。Chuck已经成为会议上一位定期演讲的固定人物,他令双方的听众都满意。
在最后一次SD会议上(1997年秋,华盛顿DC),当我们得知当天是Chuck的生日后,我们一伙人便邀他出去共进晚餐。全体就座后,我环顾四周,才意识到我们都是技术图书的作者:Bjarne Stroustrup(C++的创始人和The C++ Programming Language一书的作者)、Dan Saks(C++专栏作家、演说家、顾问和ANI/ISO C++委员会长期秘书)、 Bobby Schmidt:(CUJ专栏作家、演讲家)、MarcoCantu(Mastering Delphi一书和C++丛书的作者)、 TimGooch(CobbGroup出版社C++的编辑,现任Java的编辑)以及我本人,这些人都非常敬重Chuck,所以才请他吃晚餐。
当然,C++教程式的书不在少数。我有时感到自己正坚持不懈地在写这样的一本书(我的最终成果是Thinking in C++)。然而,当你已经理解了基础知识并想更加深入时会如何呢?虽然书是有了,但是它们常常是以专家的口吻写的(一种令人瞠目结舌的语言)要不然就是它们所覆盖的主题太深奥莫测。而这本书架起了通往高深主题的桥梁,它给了你所需要的而又不会在前进的过程中难倒你。
Chuck的书写得既明了又准确,准确是我非常喜欢的一件事情。一本书的瑕疵太多会令我厌倦(过去我们不得不容忍这样的书,但现在精心地编写的C++书籍足够多的了,因此没有理由再浪费时间)。我非常喜爱这本书的另一个原因是它的每一章都很简练,每章都集中讲一个主题,你可以很快地领会它并且得到完整的概念(我注意力集中的时间可不很长)。这是一本经得起时间考验的好书,它会带给你一个又一个顿悟。
Bruce Eckel
http://www.EckelObjects.com
1997年10月
相关资源回到顶部↑
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· C/C++ 经典著作(《C专家编程》《C++ Templates中文版》《C和指针 》《C陷阱与缺陷》《C++沉思录》)
评论交流
共有32人开贴评论 61人参与评论 21人参与打分 查看
发表于:2006-7-13 17:38:00
我是专门来告诉大家我的观点的:这本书,看目录,内容是不错的,原作者的功底也是深厚的,但是翻译得太差了,你简直怀疑译者懂不懂计算机。我相信她一定是翻译了好评职称而已,而且书很贵,纯粹就是想骗钱,如果你看的话,除非你有象我这样的功底,本人讲过c/c++7次,计算机专业博士,GRE接近满分,当我看不懂他的翻译的时候,我就反过去把原来的英语想出来,就知道他说什么了。所以我还是判断出原作者的水平不错。可以说,你看中文比看英文还吃力。有评论说译者是某某国家的特聘教授,什么什么的,大家不要相信,等你们长大了,就知道学术骗子,学术流氓很多。我相信译者就是这种人。他不可能有什么水平,也许你说我仅仅因为别人翻译得不好而下结论,那么我告诉你,从一个人做一件事情的风格,你就知道他的人生态度。显然,译者是一个骗钱,骗名的假货。建议大家费劲一点,去看英文原版,不要被本书误导。读一本不好的书,造成的坏影响比你得到的东西要多得多。看英文版,还可以使你将来读帮助的时候更容易。这本书的读者,大概属于初级高一点,就算是中级吧,反正就是已经基本掌握了C++,才能读。昨天在朋友那里看到这本书,今天看了看,特地来告诉大家不要买。本人和译这绝对没有什么恩怨。也不认识译者,仅仅是对这种公然行骗的行为表示愤怒。另外我还给自考生讲过概率论,指定的教材是北京大学的何敏学,他编写的习题集,也是骗钱的,居然认为概率为0的事件为不可能事件,根本没有掌握E(x+y)=E(x)+E(y)的精髓,有些习题的解法,愚不可及,有些题目的解答提示,纯粹就是乱写,或者写一些完全没有用的东西,比如:“本题考察的是概率论的基础知识”等等,让人哭笑不得,我在上课的时候当着所有学生就骂了这本书,我本人并不认识作者,而是对所有这种人感到鄙视。
| 我要写评论 |
| 查看所有评论交流(共32条) |


点击看大图





加载中...
