C++程序设计原理与实践
作者 : (美)Bjarne Stroustrup 著
译者 : 王刚 刘晓光 吴英 李涛 译
丛书名 : 计算机科学丛书
出版日期 : 2010-06-28
ISBN : 978-7-111-30322-0
定价 : 108.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 665
开本 : 16
原书名 : C++程序设计原理与实践(英文版)
原出版社: Pearson Education Asia
属性分类: 教材
包含CD :
绝版 :
图书简介

本书一方面介绍了通用的程序设计方法(包括面向对象程序设计和泛型程序设计),另一方面还对软件开发实践中使用最广泛的程序设计语言——C++进行了很好的介绍。本书从开篇就开始介绍现代C++程序设计技术,并介绍了大量关于如何使用C++标准库来简化程序设计的内容。

图书特色

C++程序设计原理与实践
Programming
Principles and Practice Using C++
(美) Bjarne Stroustrup 著 王刚 刘晓光 吴英 李涛 译

C++之父再创C++新篇

本书是经典程序设计思想与C++开发实践的完美结合,是C++之父回归校园后对C++编程原理和技巧的全新阐述。书中全面介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等,主要讲述解决实际问题的基本程序设计方法,内容紧密联系实际,实用性强。此外,本书通过对C++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试和嵌入式系统程序设计)的展示,以及对C语言的简单描述,为你呈现了一幅程序设计的全景图。
C++初学者的权威指南。无论你是从事软件开发还是其他领域的工作,本书将为你打开程序开发之门。
中高级程序员的必备参考。通过观察程序设计大师如何处理编程中的各种问题,使你获得新的领悟和指引。
全面阐释C++基本概念和技术。与传统的C++教材相比,本书对基本概念和技术的介绍更为深入,为你编写实用、正确、易维护和有效的代码打下坚实的基础。
强调现代C++编程风格。本书从开篇就介绍现代C++程序设计技术,并揭示了大量关于如何使用C++标准库来简化程序设计的原理,使你快速掌握实用编程技巧。
配套教辅资源丰富。本书网站(www.stroustrup.com/Programming)提供了丰富的辅助资料,包括实例源码、PPT、勘误等。

Bjarne Stroustrup
英国剑桥大学计算机科学博士,C++语言的设计者和最初的实现者。他现在是德州农工大学计算机科学首席教授。1993年,由于在C++领域的重大贡献,他获得了ACM的Grace Murray Hopper大奖并成为ACM院士。在进入学术界之前,他曾在AT&T贝尔实验室工作多年。他是ISO C++标准委员会的创始人之一。

图书前言

“该死的鱼雷!全速前进。”
      ——海军上将Farragut

  程序设计是这样一门艺术, 它将问题求解方案描述成计算机可以执行的形式。程序设计中很多工作都花费在寻找求解方案以及对其求精上。通常, 只有在真正编写程序求解一个问题的过程中才会对问题本身理解透彻。
  本书适合于那些从未有过编程经验但愿意努力学习程序设计的初学者, 它能帮助你理解使用C++语言进行程序设计的基本原理并获得实践技巧。我的目标是使你获得足够多的知识和经验, 以便能使用最新最好的技术进行简单有用的编程工作。达到这一目标需要多长时间呢?作为大学一年级课程的一部分, 你可以在一个学期内完成这本书的学习(假定你有另外四门中等难度的课程)。如果你是自学的话, 不要期望能花费更少的时间完成学习(一般来说, 每周15个小时, 共14周是合适的学时安排)。
  三个月可能看起来是一段很长的时间, 但要学习的内容很多, 写第一个简单程序之前, 就要花费一个小时。而且, 所有学习过程都是渐进的: 每一章都会介绍一些新的有用的概念, 并通过从实际应用中获取的例子来阐述这些概念。随着学习进程的推进, 你通过程序代码表达思想的能力——也就是让计算机按你的期望工作的能力, 会逐渐稳步地提高。我从不会说: “先学习一个月的理论知识, 然后看看你是否能使用这些理论吧。”
  为什么要学习程序设计呢?因为计算机文化是建立在软件之上的。如果不理解软件, 那么你将退化到只能相信“魔术”的境地, 并且将被排除在很多最为有趣、最具经济效益和社会效益的领域之外。当谈论程序设计时, 我所想到的是整个计算机程序家族, 从带有GUI(图形用户界面)的个人计算机程序, 到工程计算和嵌入式系统控制程序(如数码相机、汽车和手机中的程序), 以及文字处理程序等, 在很多日常应用和商业应用中都能看到这些程序。程序设计与数学有些相似, 如果认真去做的话, 它会是一种非常有用的智力训练, 可以锻炼我们的思考能力。然而, 由于计算机能做出反馈, 程序设计又不像大多数数学形式那么抽象, 因而对更多人来说更容易接受。可以说, 程序设计是一条能够打开你的眼界, 将世界变得更美好的途径。最后, 程序设计非常有趣。
  为什么学习C++这门程序设计语言呢?学习程序设计不可能不借助一门程序设计语言, 而C++直接支持现实世界中的软件所使用的那些关键概念和技术。C++是使用最为广泛的程序设计语言之一, 其应用领域几乎没有局限。从大洋深处到火星表面, 到处都能发现C++程序的身影。C++是由一个开放的国际标准组织全面考量、精心设计的。在任何一种计算机平台上都能找到高质量的和免费的C++实现。而且, 你用C++所学到的程序设计思想, 大多数都可直接用于其他程序设计语言, 如C、C#、Fortran以及Java。最后一个原因, 我喜欢C++适合编写优美、高效的代码这一特点。
  本书不是初学程序设计的简单入门教材, 我写此书的用意也不在此。我为本书设定的目标是:能让你学到基本的实用编程技术的最简单的书籍。这是一个雄心勃勃的目标, 因为很多现代软件所依赖的技术, 不过才出现短短几年时间。
  我的基本假设是, 你希望编写供他人使用的程序, 并愿意认真负责地、 较高质量地完成这个工作;也就是说, 我假定你希望达到专业水准。因此, 我为本书选择的主题覆盖了开始学习实用编程技术所需要的内容, 而不只是那些容易讲授和容易学习的内容。如果某种技术是你做好基本编程工作所需要的, 那么本书就会介绍它, 同时展示用以支持这种技术的编程思想和语言工具, 并提供相应的练习, 期望你通过做这些练习来熟悉这种技术。但如果你只想了解“玩具程序”, 那么你能学到的将远比我所提供的少得多。另一方面, 我不会用一些实用性很低的内容来浪费你的时间, 本书介绍的内容都是你在实践中几乎肯定会用到的。
  如果你只是希望直接使用别人编写的程序, 而不想了解其内部原理, 也不想亲自向代码中加入重要的内容, 那么本书不适合你。请考虑是否采用另一本书或另一种程序设计语言会更好些。如果这大概就是你对程序设计的看法, 那么请同时考虑一下你从何得来的这种观点, 它真的满足你的需求吗?人们常常低估程序设计的复杂程度和它的重要性。我不愿看到你不喜欢程序设计, 只是因为你的需求与我所描述的部分软件之间不匹配。信息技术世界中还有很多部分是不要求程序设计知识的, 那些领域可能适合你。本书面向的是那些确实希望编写和理解复杂计算机程序的人。
  考虑到本书的结构和注重实践的特点, 它也可以作为程序设计方面的第二本书, 适合那些已经了解一点C++的人, 和那些会用其他语言编程, 现在想学习C++的人。如果你属于其中一类, 我不好估计你学习这本书要花费多长时间。但我可以给你的建议是, 多做练习。因为你在学习中常见的一个问题是习惯用熟悉的、旧的方式编写程序, 而不是在适当的地方采用新技术, 多做练习会帮助你解决这个问题。如果你曾经按某种更为传统的方式学习过C++, 那么在进行到第7章之前, 你会发现一些令你惊奇的和有用的内容。除非你的名字是Stroustrup, 否则你会发现我在本书中所讨论的内容不是“你父辈的C++”。
  学习程序设计要靠编程实践。在这一点上, 程序设计与其他需要实践学习的技能是相似的。你不可能仅仅通过读书就学会游泳、演奏乐器或者开车, 你必须进行实践。同样, 不读程序、不写程序就不可能学会程序设计。本书给出了大量代码实例, 都配合有说明文字和图表。你需要通过读这些代码来理解程序设计的思想、概念和原理, 并掌握用来表达这些思想、概念和原理的程序设计语言的特性。但有一点很重要, 仅仅读代码是不能学会编程实践技巧的。为此, 你必须进行编程练习, 通过编程工具熟悉编写、编译和运行程序。你需要亲身体验编程中会出现的错误, 学习如何修改它们。总之, 在学习程序设计的过程中, 编写代码的练习是不可替代的。而且, 这也是乐趣所在!
  另一方面, 程序设计远非只是遵循一些语法规则和阅读手册那么简单。本书的重点不在于C++的语法, 而在于理解基础思想、原理和技术, 这是一名好程序员所必备的。只有设计良好的代码才有机会成为一个正确、可靠和易维护的系统的一部分。而且, “基础”意味着延续性: 当现在的程序设计语言和工具演变甚至被取代后, 这些基础知识仍会保持其重要性。
  那么计算机科学、软件工程、信息技术等又如何呢?它们都属于程序设计范畴吗?当然不是!但程序设计是一门基础性的学科, 是所有计算机相关领域的基础, 在计算机科学领域占有重要的地位。本书对算法、数据结构、用户接口、数据处理和软件工程等领域的重要概念和技术进行了简要介绍。但本书不能取代对这些领域全面、均衡的学习。
  代码可以很有用, 同样也可以很优美。本书会帮你了解优美的代码意味着什么, 并帮你掌握构造优美代码的原理和实践技巧。祝你学习顺利!
致学生
  到目前为止, 我在德州农工大学已经用本书的初稿教过1000名以上的大一新生, 其中60%曾经有过编程经历, 而剩余40%从未见过哪怕一行代码。大多数学生的学习是成功的, 所以你也可以成功。
  你不一定是在某门课程中来学习本书, 我认为本书会广泛用于自学。然而, 不管你学习本书是作为课程的一部分还是自学, 都要尽量与他人协作。程序设计有一个不好的名声——它是一种个人活动, 这是不公正的。大多数人在作为一个有共同目标的团体的一份子时, 工作效果更好, 学习得更快。与朋友一起学习和讨论问题不是作弊!而是取得进步最有效, 同时也是最快乐的途径。如果没有特殊情况的话, 与朋友一起工作会促使你表达出你的思想, 这正是测试你对问题理解和确认你的记忆的最有效的方法。你没有必要独自解决所有编程语言和编程环境中的难题。但是, 请不要自欺欺人, 不去完成那些简单练习和大量的习题(即使没有老师督促你, 你也不应这样做)。记住, 程序设计(尤其)是一种实践技能, 需要通过实践来掌握。如果你不编写代码(完成每章的若干习题), 那么阅读本书就纯粹是一种无意义的理论学习。
  大多数学生, 特别是那些爱思考的好学生, 有时会对自己努力工作是否值得产生疑问。当(不是如果)你产生这样的疑问时, 休息一会儿, 重新阅读这篇前言, 阅读一下第1章(“计算机、 人和程序设计”)和第22章(“思想和历史”)。在那里, 我试图阐述我在程序设计中发现了哪些令人兴奋的东西, 以及为什么我会认为程序设计是能为世界带来积极贡献的重要工具。如果你对我的教学理念和一般方法有疑问, 请阅读第0章(“致读者”)。
  你可能会对本书的厚度感到担心。本书如此之厚的一部分原因是, 我宁愿反复重复一些解释说明或增加一些实例, 而不是让你自己到处找这些内容, 这应该令你安心。另外一个主要原因是, 本书的后半部分是一些参考资料和补充资料, 供你想要深入了解程序设计的某个特定领域(如嵌入式系统程序设计、 文本分析或数值计算)时查阅。
  还有, 学习中请耐心些。学习任何一种重要的、有价值的新技能都要花费一些时间, 而这是值得的。
致教师
  本书不是一门传统的计算机科学的101课程, 而是一本关于如何构造能实际工作的软件的书。因此本书省略了很多计算机科学系学生按惯例要学习的内容(图灵完全、 状态机、 离散数学、 乔姆斯基文法等)。硬件相关的内容也省略了, 因为我假定学生从幼儿园时代就已经通过不同途径使用过计算机了。本书也不准备涉及一些计算机科学领域最重要的主题。本书是关于程序设计的(或者更一般地, 是关于如何开发软件的), 因此关注的是少量主题的更深入的细节, 而不是像传统计算机课程那样讨论很多主题。本书试图只做好一件事, 计算机科学不是一门课程可以囊括的。如果本书(本课程)被计算机科学、计算机工程、电子工程(很多我们最早的学生都是电子专业的)、信息科学或者其他相关专业所采用, 我希望这门课程能和其他一些课程一起进行, 共同形成对计算机科学的完整介绍。
  请阅读第0章, 那里有对我的教学理念、一般教学方法等的介绍。请在教学过程中尝试将这些观点传达给你的学生。
资源
  本书网站的网址为wwwstroustrupcom/Programming, 其中包含了各种使用本书讲授和学习程序设计所需的辅助资料。这些资料可能会随着时间推移不断改进, 但对于初学者, 现在可以找到下面一些资料:
   基于本书的讲义的幻灯片。
   一本教师指南。
   本书中使用的库的头文件和实现。
   本书中实例的代码。
   某些习题的解答。
   可能有用的一些链接。
   勘误表。
  欢迎随时提出对这些资料的改进意见。
致谢
  我要特别感谢我已故的同事和联合导师Lawrence “Pete” Peterson, 很久以前, 在我还未感受到教授初学者的惬意时, 是他鼓励我承担这项工作, 并提供了很多能令课程成功的教学经验。没有他, 这门课程的首次尝试就会失败。他参与了这门课程最初的建设, 本书就是为这门课程所著。他还和我一起反复讲授这门课程, 汲取经验, 不断改进课程和本书。在本书中我使用的“我们”这个字眼, 最初的意思就是指“Pete和我”。
  我要感谢那些直接或间接帮助过我撰写本书的学生、助教以及德州农工大学讲授ENGR 112课程的教师, 以及Walter Daugherity, 他曾讲授过这门课程。还要感谢Damian Dechev、 Tracy Hammond、 Arne Tolstrup Madsen、 Gabriel Dos Reis、 Nicholas Stroustrup、 J C van Winkel、 Greg Versoonder、 Ronnie Ward和Leor Zolman, 他们对本书初稿提出了一些建设性意见。感谢Mogens Hansen为我解释引擎控制软件。感谢Al Aho、 Stephen Edwards、 Brian Kernighan和Daisy Nguyen, 他们帮助我在夏天躲开那些分心的事来完成本书。
  感谢AddisonWesley公司为我安排的审阅人: Richard Enbody、 David Gustafson、 Ron McCarty和K Narayanaswamy, 他们基于自身讲授C++课程或者大学计算机科学系101课程的经验, 对本书提出了宝贵的意见。还要感谢我的编辑Peter Gordon为本书提出的很多有价值的意见以及他极大的耐心。我非常感谢AddisonWesley公司为本书组织的制作团队的同仁, 他们为本书的高质量出版做出了很多贡献, 他们是: Julie Grady (校对)、 Chris Keane (排版)、 Rob Mauhar (插图)、 Julie Nahil (制作编辑)和Barbara Wood (文字编辑)。
  另外, 我本人对本书代码的检查很不系统, Bashar Anabtawi、 Yinan Fan和Yuriy Solodkyy使用微软C++ 71版(2003)和80版(2005)以及GCC 344版检查了所有代码片段。
  我还要感谢Brian Kernighan和Doug McIlroy为程序设计类书籍的撰写定下了非常高的标准, 以及Dennis Ritchie和Kristen Nygaard为实用编程语言设计提供的非常有价值的经验。

上架指导

计算机\程序设计

封底文字

C++之父再创C++新篇章

本书是经典程序设计思想与C++开发实践的完美结合,是C++之父回归校园后对C++编程原理和技巧的全新阐述。书中全面地介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等,教你学会如何编写具有输入、输出、计算以及简单图形显示等功能的程序。此外,本书通过对C++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试以及嵌入式系统程序设计)的展示,以及对C语言的简单描述,为你呈现了一幅程序设计的全景图。


● C++初学者的权威指南。无论你是从事软件开发还是其他领域的工作,本书将为你打开程序开发之门。
● 中高级程序员的必备参考。通过观察程序设计大师如何处理编程中的各种问题,使你获得新的领悟和指引。
● 全面阐释C++基本概念和技术。与传统的C++教材相比,本书对基本概念和技术的介绍更为深入,为你编写实用、正确、易维护和有效的代码打下坚实的基础。
● 强调现代C++编程风格。本书从开篇就介绍现代C++程序设计技术,并揭示了大量关于如何使用C++标准库来简化程序设计的原理,使你快速掌握实用编成技巧。
● 配套教辅资源丰富。本书网站(www.stroustrup.com/Programming)提供了丰富的辅助资料,包括实例源码、PPT、勘误等。

作者简介

(美)Bjarne Stroustrup 著:Bjarne Stroustrup 英国剑桥大学计算机科学博士,C++语言的设计者和最初的实现者,也是《C++程序设计语言》(已由机械工业出版社引进出版)一书的作者。他现在是德州农工大学计算机科学首席教授。1993年,由于在C++领域的重大贡献,Bjarne获得了ACM的 Grace Murray Hopper大奖并成为ACM院士。在进入学术界之前,他在AT&T贝尔实验室工作。他是ISO C++标准委员会的创始人之一。

译者简介

王刚 刘晓光 吴英 李涛 译:暂无简介

译者序

程序设计是打开计算机世界大门的金钥匙, 它使五彩斑斓的软件对你来说不再是“魔术”。C++语言则是学习掌握这把金钥匙的有力武器, 它优美、 高效, 从大洋深处到火星表面, 从系统核心到高层应用, 从掌中的手机到超级计算机, 到处都有C++程序的身影。本书适合那些从未有过程序设计经验的初学者, 如果你愿意努力学习, 本书能帮助你理解使用C++语言进行程序设计的基本原理及大量实践技巧。你所学到的思想, 大多数也都可直接用于其他程序设计语言。本书不是初学程序设计语言的简单入门教材, 它的目标是能让读者学到基本的实用程序设计技术, 因此也可以作为程序设计方面的“第二本书”。基于这样一个目标, 注重实践是本书的明显特点。它希望教会你编写真正能被他人所使用的“有用的程序”, 而非“玩具程序”。因此, 除了基本的C++程序特性之外, 本书还介绍了大量的求解实际问题的程序设计技术: 如语法分析器程序的设计、 图形化程序设计、 利用正则表达式处理文本、 数值计算程序设计以及嵌入式程序设计等。在其他大多数程序设计入门书籍中, 是找不到这些内容的, 像调试技术、 测试技术等其他程序设计书籍着墨不多的话题, 本书也有详细的介绍。程序设计远非遵循语法规则和阅读手册那么简单, 而在于理解基本思想、 原理和技术, 并进行大量实践。本书阐述了这一理念, 为读者指引了明确的方向, 教会读者如何才能达到编写有用的、 优美的程序这一最终目标。
  本书的作者Bjarne Stroustrup是C++语言的设计者和最初的实现者, 也是《The C++ Programming Language》(AddisonWesley出版社)一书的作者。他现在是德州农工大学计算机科学首席教授, 美国国家工程院的会员和AT&T院士。在进入学术界之前, 他在AT&T贝尔实验室工作多年。他是ISO C++标准委员会的创始人之一。本书是他在C++程序设计领域奉献给广大读者的又一经典著作。
  本书分为五个部分。第一部分介绍基本的C++程序设计知识, 包括第一个“Hello, World!”程序, 对象、 类型和值, 运算, 错误处理, 函数, 类等内容, 以及一个计算器程序实例。第二部分介绍输入和输出, 首先介绍了输入/输出流的基本概念和格式化输出方法, 然后第12~16章重点介绍了图形/GUI类和图形化程序设计。第三部分介绍数据结构和算法, 重点介绍了向量、 自由内存空间、 数组、 模板和异常、 容器和迭代器以及算法和映射。第四部分希望拓宽读者的视野, 介绍了程序设计语言理念和历史、 文本处理技术、 数值计算、 嵌入式程序设计技术及测试技术, 此外还较为详细地介绍了C语言与C++的异同。第五部分为附录, 包括C++语言概要、 标准库概要、 Visual Studio简要入门、 FLTK安装以及GUI实现等内容。
  本书的序、 第0章、 8~11章、 23~25章、 27章、 附录、 术语表由王刚翻译, 第4、 5、 22、 26章由刘晓光翻译, 第1~3章、 17~21章由吴英翻译, 第6~7章、 12~16章由李涛翻译。翻译大师经典, 难度超乎想象。接受任务之初, 诚惶诚恐; 翻译过程中, 如履薄冰; 完成后, 忐忑不安。虽然竭尽全力, 但肯定还有很多错漏之处, 敬请读者批评指正。

译者
2010年4月于南开大学

图书目录

出版者的话
译者序
前言
第0章致读者
01本书结构
011一般方法
012简单练习、 习题等
013进阶学习
02讲授和学习本书的方法
021本书内容顺序的安排
022程序设计和程序设计语言
023可移植性
03程序设计和计算机科学
04创造性和问题求解
05反馈方法
06参考文献
07作者简介
第1章计算机、 人与程序设计
11介绍
12软件
13人
14计算机科学
15计算机已无处不在
151有屏幕和没有屏幕
152船舶
153电信
154医疗
155信息领域
156一种垂直的视角
157与C++程序设计有何联系
16程序员的理想
第一部分基 本 知 识
第2章Hello, World!
21程序
22经典的第一个程序
23编译
24链接
25编程环境
第3章对象、 类型和值
31输入
32变量
33输入和类型
34运算和运算符
35赋值和初始化
351实例: 删除重复单词
36组合赋值运算符
361实例: 重复单词统计
37命名
38类型和对象
39类型安全
391安全类型转换
392不安全类型转换
第4章计算
41计算
42目标和工具
43表达式
431常量表达式
432运算符
433类型转换
44语句
441选择语句
442循环语句
45函数
451使用函数的原因
452函数声明
46向量
461向量空间增长
462一个数值计算的例子
463一个文本处理的例子
47语言特性
第5章错误
51介绍
52错误的来源
53编译时错误
531语法错误
532类型错误
533警告
54连接时错误
55运行时错误
551调用者处理错误
552被调用者处理错误
553报告错误
56异常
561错误参数
562范围错误
563输入错误
564截断错误
57逻辑错误
58估计
59调试
591实用调试技术
510前置条件和后置条件
5101后置条件
511测试
第6章编写一个程序
61一个问题
62对问题的思考
621程序设计的几个阶段
622策略
63回到计算器问题
631第一步尝试
632单词
633实现单词
634使用单词
635重新开始
64文法
641英文文法
642设计一个文法
65将文法转换为程序
651实现文法规则
652表达式
653项
654基本表达式
66试验第一个版本
67试验第二个版本
68单词流
681实现Token_stream
682读单词
683读数值
69程序结构
第7章完成一个程序
71介绍
72输入和输出
73错误处理
74处理负数
75模运算: %
76清理代码
761符号常量
762使用函数
763代码格式
764注释
77错误恢复
78变量
781变量和定义
782引入单词name
783预定义名字
784我们到达目的地了吗
第8章函数相关的技术细节
81技术细节
82声明和定义
821声明的类别
822变量和常量声明
823默认初始化
83头文件
84作用域
85函数调用和返回
851声明参数和返回类型
852返回一个值
853传值参数
854传常量引用参数
855传引用参数
856传值与传引用的对比
857参数检查和转换
858实现函数调用
86求值顺序
861表达式求值
862全局初始化
87名字空间
871using声明和using指令
第9章类相关的技术细节
91用户自定义类型
92类和成员
93接口和实现
94演化一个类
941结构和函数
942成员函数和构造函数
943保持细节私有性
944定义成员函数
945引用当前对象
946报告错误
95枚举类型
96运算符重载
97类接口
971参数类型
972拷贝
973默认构造函数
974const成员函数
975类成员和“辅助函数”
98Date类
第二部分输入和输出
第10章输入/输出流
101输入和输出
102I/O流模型
103文件
104打开文件
105读写文件
106I/O错误处理
107读取单个值
1071将程序分解为易管理的
子模块
1072将人机对话从函数中分离
108用户自定义输出操作符
109用户自定义输入操作符
1010一个标准的输入循环
1011读取结构化的文件
10111内存表示
10112读取结构化的值
10113改变表示方法
第11章定制输入/输出
111有规律的和无规律的输入和输出
112格式化输出
1121输出整数
1122输入整数
1123输出浮点数
1124精度
1125域
113文件打开和定位
1131文件打开模式
1132二进制文件
1133在文件中定位
114字符串流
115面向行的输入
116字符分类
117使用非标准分隔符
118还有很多未讨论的内容
第12章一个显示模型
121为什么要使用图形用户界面
122一个显示模型
123第一个例子
124使用GUI库
125坐标系
126形状
127使用形状类
1271图形头文件和主函数
1272一个几乎空白的窗口
1273坐标轴
1274绘制函数图
1275Polygon
1276Rectangle
1277填充
1278文本
1279图片
12710还有很多未讨论的内容
128让图形程序运行起来
1281源文件
第13章图形类
131图形类概览
132Point和Line
133Lines
134Color
135Line_style
136Open_polyline
137Closed_polyline
138Polygon
139Rectangle
1310管理未命名对象
1311Text
1312Circle
1313Ellipse
1314Marked_polyline
1315Marks
1316Mark
1317Image
第14章设计图形类
141设计原则
1411类型
1412操作
1413命名
1414可变性
142Shape类
1421一个抽象类
1422访问控制
1423绘制形状
1424拷贝和可变性
143基类和派生类
1431对象布局
1432类的派生和虚函数定义
1433覆盖
1434访问
1435纯虚函数
144面向对象程序设计的好处
第15章绘制函数图和数据图
151介绍
152绘制简单函数图
153Function类
1531默认参数
1532更多的例子
154Axis类
155近似
156绘制数据图
1561读取文件
1562一般布局
1563数据比例
1564构造数据图
第16章图形用户界面
161用户界面的选择
162“Next”按钮
163一个简单的窗口
1631回调函数
1632等待循环
164Button和其他Widget
1641Widget
1642Button
1643In_box和Out_box
1644Menu
165一个实例
166控制流的反转
167添加菜单
168调试GUI代码
第三部分数据结构和算法
第17章向量和自由空间
171介绍
172向量的基本知识
173内存、 地址和指针
1731运算符sizeof
174自由空间和指针
1741自由空间分配
1742通过指针访问数据
1743指针范围
1744初始化
1745空指针
1746自由空间释放
175析构函数
1751生成的析构函数
1752析构函数和自由空间
176访问向量元素
177指向类对象的指针
178类型混用: 无类型指针和指针
类型转换
179指针和引用
1791指针参数和引用参数
1792指针、 引用和继承
1793实例: 列表
1794列表的操作
1795列表的使用
1710this指针
17101关于Link使用的更多讨论
第18章向量和数组
181介绍
182拷贝
1821拷贝构造函数
1822拷贝赋值
1823拷贝术语
183必要的操作
1831显示构造函数
1832调试构造函数与析构函数
184访问向量元素
1841对const对象重载运算符
185数组
1851指向数组元素的指针
1852指针和数组
1853数组初始化
1854指针问题
186实例: 回文
1861使用string实现回文
1862使用数组实现回文
1863使用指针实现回文
第19章向量、 模板和异常
191问题
192改变向量大小
1921方法描述
1922reserve和capacity
1923resize
1924push_back
1925赋值
1926到现在为止我们设计的
vector类
193模板
1931类型作为模板参数
1932泛型编程
1933容器和继承
1934整数作为模板参数
1935模板参数推导
1936一般化vector类  
194范围检查和异常
1941附加讨论: 设计上的考虑 
1942使用宏
195资源和异常
1951潜在的资源管理问题
1952资源获取即初始化
1953保证
1954auto_ptr
1955vector类的RAII
第20章容器和迭代器
201存储和处理数据
2011处理数据
2012一般化代码
202STL建议
203序列和迭代器
2031回到实例
204链表
2041列表操作
2042迭代
205再次一般化vector
206实例: 一个简单的文本编辑器
2061处理行
2062迭代
207vector、 list和 string
2071insert 和 erase
208调整vector类达到STL版本
的功能
209调整内置数组达到STL版本
的功能
2010容器概览
20101迭代器类别
第21章算法和映射
211标准库中的算法
212最简单的算法: find()
2121一些一般的应用
213通用搜索算法: find_if()
214函数对象
2141函数对象的抽象视图
2142类成员上的谓词
215数值算法
2151累积
2152一般化accumulate()
2153内积
2154一般化inner_product()
216关联容器
2161映射
2162map概览
2163另一个map实例
2164unordered_map
2165集合
217拷贝操作
2171拷贝
2172流迭代器
2173使用集合保持顺序
2174copy_if
218排序和搜索
第四部分拓 宽 视 野
第22章理念和历史
221历史、理念和专业水平
2211程序设计语言的目标和哲学
2212编程理念
2213风格/范型
222程序设计语言历史概览
2221最早的程序语言
2222现代程序设计语言的起源
2223Algol家族
2224Simula
2225C
2226C++
2227今天的程序设计语言
2228参考资源
第23章文本处理
231文本
232字符串
233I/O流
234映射
2341实现细节
235一个问题
236正则表达式的思想
237用正则表达式进行搜索
238正则表达式语法
2381字符和特殊字符
2382字符集
2383重复
2384子模式
2385可选项
2386字符集和范围
2387正则表达式错误
239与正则表达式进行模式匹配
2310参考文献
第24章数值计算
241介绍
242大小、 精度和溢出
2421数值限制
243数组
244C 风格的多维数组
245Matrix库
2451矩阵的维和矩阵访问
2452一维矩阵
2453二维矩阵
2454矩阵I/O
2455三维矩阵
246实例: 求解线性方程组
2461经典的高斯消去法
2462选取主元
2463测试
247随机数
248标准数学函数
249复数
2410参考文献
第25章嵌入式系统程序设计
251嵌入式系统
252基本概念
2521可预测性
2522理想
2523生活在故障中
253内存管理
2531动态内存分配存在的问题
2532动态内存分配的替代方法
2533存储池实例
2534栈实例
254地址、 指针和数组
2541未经检查的类型转换
2542一个问题: 不正常的接口
2543解决方案: 接口类
2544继承和容器
255位、 字节和字
2551位和位运算
2552bitset
2553有符号数和无符号数
2554位运算
2555位域
2556实例: 简单加密
256编码规范
2561编码规范应该是怎样的
2562编码原则实例
2563实际编码规范
第26章测试
261我们想要什么
2611说明
262程序正确性证明
263测试
2631回归测试
2632单元测试
2633算法和非算法
2634系统测试
2635测试类
2636寻找不成立的假设
264测试方案设计
265调试
266性能
2661计时
267参考文献
第27章C语言
271C和C++: 兄弟
2711C/C++兼容性
2712C不支持的C++特性
2713C标准库
272函数
2721不支持函数名重载
2722函数参数类型检查
2723函数定义
2724C++调用C和C调用C++
2725函数指针
273小的语言差异
2731结构标签名字空间
2732关键字
2733定义
2734C风格类型转换
2735void*的转换
2736枚举
2737名字空间
274动态内存分配
275C风格字符串
2751C风格字符串和const
2752字节操作
2753实例: strcpy()
2754一个风格问题
276输入/输出: stdio
2761输出
2762输入
2763文件
277常量和宏
278宏
2781类函数宏
2782语法宏
2783条件编译
279实例: 侵入式容器
术语表
参考书目
第五部分附录
附录AC++语言概要
附录B标准库概要
附录CVisual Studio简要入门教程
附录D安装FLTK
附录EGUI实现
本书附录部分的内容请读者登录华章网站(wwwhzbookcom)下载。——编辑注

教学资源推荐
作者: 曹先彬,陈香兰 编著
作者: (美)Kevin F. Brennan 著
作者: 黄宜华 主编 苗凯翔 副主编
参考读物推荐
作者: 高群凯
作者: 严守权
作者: (美)Allan Liska