华信教育资源网
C++大学教程(第九版)
丛   书   名: 国外计算机科学教材系列
作   译   者:张引等 出 版 日 期:2016-07-01
出   版   社:电子工业出版社 维   护   人:冯小贝 
书   代   号:G0290010 I S B N:9787121290015

图书简介:

本书向授课教师提供英文原版教辅(习题解答,PPT,源代码),具体申请方式请咨询te_service@phei.com.cn。本书是一本C++编程方面的优秀教程,全面地介绍了过程式编程与面向对象编程的原理和方法,细致地分析了各种性能问题、移植性问题和可能出错的地方,介绍了如何提高软件工程质量,并提供了丰富的自测练习和项目练习。可以说本书是非常好的学习C++语言的教程之一,是学习C++的"宝典”。
您的专属联系人更多
关注 评论(0) 分享
配套资源 图书内容 样章/电子教材 图书评价
  • 配 套 资 源
    图书特别说明:由于成本考虑,本书不作为参考书赠送。如果确有授课教材选用的需求,可将详细情况发送给本书专属联系人,我们将进一步沟通并酌情处理。

    本书资源

    会员上传本书资源

  • 图 书 内 容

    内容简介

    本书向授课教师提供英文原版教辅(习题解答,PPT,源代码),具体申请方式请咨询te_service@phei.com.cn。本书是一本C++编程方面的优秀教程,全面地介绍了过程式编程与面向对象编程的原理和方法,细致地分析了各种性能问题、移植性问题和可能出错的地方,介绍了如何提高软件工程质量,并提供了丰富的自测练习和项目练习。可以说本书是非常好的学习C++语言的教程之一,是学习C++的"宝典”。

    图书详情

    ISBN:9787121290015
    开 本:16开
    页 数:784
    字 数:1588.0

    本书目录

    目录
    第1章  计算机和C++简介
    1.1简介
    1.2计算机和互联网在工业和研究领域中的应用
    1.3硬件和软件
    1.4数据的层次结构
    1.5机器语言、 汇编语言和高级语言
    1.6 C++
    1.7程序设计语言
    1.8对象技术介绍
    1.9典型的C++程序开发环境
    1.10试运行一个C++应用程序
    1.11操作系统
    1.12互联网和万维网
    1.13软件开发的一些关键术语
    1.14 C++11和开源的Boost库
    1.15与信息技术与时俱进
    1.16 Web资源
    
    第2章  C++编程入门、 输入/输出和运算符
    2.1简介
    2.2第一个C++程序: 输出一行文本
    2.3修改第一个C++程序
    2.4另一个C++程序: 整数相加
    2.5内存的概念
    2.6算术运算
    2.7判断: 相等运算符和关系运算符
    2.8本章小结
    
    第3章 类、 对象和字符串的介绍
    3.1简介
    3.2定义具有成员函数的类
    3.3定义具有形参的成员函数
    3.4数据成员、 set成员函数和get成员函数
    3.5使用构造函数初始化对象
    3.6一个类对应一个独立文件的可复用性
    3.7接口与实现的分离
    3.8用set函数确认数据的有效性
    3.9本章小结
    
    第4章  控制语句(第I部分)、 赋值、 自增和自减运算符
    4.1简介
    4.2算法
    4.3伪代码
    4.4控制结构
    4.5 if选择语句
    4.6 if...else双路选择语句
    4.7 while循环语句
    4.8算法详述: 计数器控制的循环
    4.9算法详述: 标记控制的循环
    4.10算法详述: 嵌套的控制语句
    4.11赋值运算符
    4.12自增和自减运算符
    4.13本章小结
    
    第5章  控制语句(第II部分)和逻辑运算符
    5.1简介
    5.2计数器控制的循环的要素
    5.3 for循环语句
    5.4使用for语句的例子
    5.5 do...while循环语句
    5.6 switch多路选择语句
    5.7 break和continue语句
    5.8逻辑运算符
    5.9 ==运算符与=运算符的混淆问题
    5.10结构化编程小结
    5.11本章小结
    
    第6章  函数和递归入门
    6.1简介
    6.2 C++的程序组件
    6.3数学库函数
    6.4具有多个形参的函数定义
    6.5函数原型和实参类型的强制转换
    6.6C++标准库头文件
    6.7实例研究: 随机数生成
    6.8实例研究: 博彩游戏和枚举类型简介
    6.9C++11的随机数
    6.10存储类别和存储期
    6.11作用域规则
    6.12函数调用堆栈和活动记录
    6.13无形参的函数
    6.14内联函数
    6.15引用和引用形参
    6.16默认实参
    6.17一元的作用域分辨运算符
    6.18函数重载
    6.19函数模板
    6.20递归
    6.21递归应用示例: Fibonacci数列
    6.22递归与迭代
    6.23本章小结
    
    第7章  类模板array和vector、 异常捕获
    7.1简介
    7.2 array对象
    7.3 array对象的声明
    7.4使用array对象的例子
    7.5基于范围的for语句
    7.6实例研究: 利用array对象存放成绩的GradeBook类
    7.7 array对象的排序与查找
    7.8多维array对象
    7.9实例研究: 利用二维array对象的GradeBook类
    7.10 C++标准库类模板vector的介绍
    7.11本章小结
    
    第8章  指针
    8.1简介
    8.2指针变量的声明和初始化
    8.3指针运算符
    8.4使用指针的按引用传递方式
    8.5内置数组
    8.6使用const修饰指针
    8.7 sizeof运算符
    8.8指针表达式和指针算术运算
    8.9指针和内置数组之间的关系
    8.10基于指针的字符串
    8.11本章小结
    
    第9章  类的深入剖析: 抛出异常
    9.1简介
    9.2 Time类实例研究
    9.3类的作用域和类成员的访问
    9.4访问函数和工具函数
    9.5 Time类实例研究: 具有默认实参的构造函数
    9.6析构函数
    9.7何时调用构造函数和析构函数
    9.8 Time类实例研究: 微妙的陷阱——返回private数据成员的引用或指针
    9.9默认的逐个成员赋值
    9.10 const对象和const成员函数
    9.11组成: 对象作为类的成员
    9.12 friend函数和friend类
    9.13使用this指针
    9.14 static类成员
    9.15本章小结
    
    第10章  运算符重载: string类
    10.1简介
    10.2使用标准库中string类的重载运算符
    10.3运算符重载的基础知识
    10.4重载二元运算符
    10.5重载二元流插入运算符和流提取运算符
    10.6重载一元运算符
    10.7重载一元前置与后置运算符: ++和--
    10.8实例研究: Date类
    10.9动态内存管理
    10.10实例研究: Array类
    10.11运算符作为成员函数和非成员函数的比较
    10.12类型转换
    10.13 explicit构造函数与转换运算符
    10.14重载函数调用运算符()
    10.15本章小结
    
    第11章  面向对象编程: 继承
    11.1简介
    11.2基类和派生类
    11.3基类和派生类之间的关系
    11.4派生类中的构造函数和析构函数
    11.5 public、 protected和private继承
    11.6继承与软件工程
    11.7本章小结
    
    第12章  面向对象编程: 多态性
    12.1简介
    12.2多态性介绍: 多态视频游戏
    12.3类继承层次中对象之间的关系
    12.4类型域和switch语句
    12.5抽象类和纯virtual函数
    12.6实例研究: 应用多态性的工资发放系统
    12.7(选读)多态性、 virtual函数和动态绑定的底层实现机制
    12.8实例研究: 应用向下强制类型转换、 dynamic_cast、 typeid和type_info并使用
    多态性和运行时类型信息的工资发放系统
    12.9本章小结
    
    第13章  输入/输出流的深入剖析
    13.1简介
    13.2流
    13.3输出流
    13.4输入流
    13.5使用read、 write和gcount的非格式化的I/O
    13.6流操作符简介
    13.7流的格式状态和流操作符
    13.8流的错误状态
    13.9将输出流连接到输入流
    13.10本章小结
    
    第14章  文件处理
    14.1简介
    14.2文件和流
    14.3创建顺序文件
    14.4从顺序文件读取数据
    14.5更新顺序文件
    14.6随机存取文件
    14.7创建随机存取文件
    14.8向随机存取文件随机写入数据
    14.9从随机存取文件顺序读取数据
    14.10实例研究: 事务处理程序
    14.11对象序列化
    14.12本章小结第15章标准库的容器和迭代器
    15.1标准模板库(STL)简介
    15.2容器简介
    15.3迭代器简介
    15.4算法简介
    15.5序列容器
    15.6关联容器
    15.7容器适配器
    15.8 bitset类
    15.9本章小结
    
    第16章  标准库算法
    16.1简介
    16.2对迭代器的最低要求
    16.3算法
    16.4函数对象
    16.5 lambda表达式
    16.6标准库算法总结
    16.7本章小结
    
    第17章  异常处理深入剖析
    17.1简介
    17.2实例: 处理除数为0的异常处理
    17.3重新抛出异常
    17.4堆栈展开
    17.5什么时候使用异常处理
    17.6构造函数、 析构函数和异常处理
    17.7异常与继承
    17.8处理new失败
    17.9类uique_ptr和动态内存分配
    17.10标准库的异常类层次结构
    17.11本章小结
    
    第18章  自定义模板的介绍
    18.1简介
    18.2类模板
    18.3使用函数模板来操作类模板特化的对象
    18.4非类型形参
    18.5模板类型形参的默认实参
    18.6重载函数模板
    18.7本章小结
    
    第19章  自定义的模板化数据结构
    19.1简介
    19.2自引用类
    19.3链表
    19.4堆栈
    19.5队列
    19.6树
    19.7本章小结
    
    第20章  查找与排序
    20.1简介
    20.2查找算法
    20.3排序算法
    20.4本章小结
    
    第21章  string类和字符串流处理的深入剖析
    21.1简介
    21.2字符串的赋值和连接
    21.3字符串的比较
    21.4子串
    21.5交换字符串
    21.6 string类的特征
    21.7查找字符串中的子串和字符
    21.8在字符串中替换字符
    21.9在字符串中插入字符
    21.10转换成C风格的基于指针的char字符串
    21.11迭代器
    21.12字符串流处理
    21.13 C++11数值转换函数
    21.14本章小结
    
    第22章  位、 字符、 C字符串和结构体
    22.1简介
    22.2结构体的定义
    22.3 typedef
    22.4示例: 洗牌和发牌模拟
    22.5位运算符
    22.6位域
    22.7字符处理库
    22.8 C字符串操作函数
    22.9 C字符串转换函数
    22.10 C字符串操作库中的搜索函数
    22.11 C字符串操作库中的内存函数
    22.12本章小结
    
    第23章  其他主题
    23.1简介
    23.2 const_cast运算符
    23.3 mutable类成员
    23.4命名空间
    23.5运算符关键字
    23.6指向类成员的指针(.和->)
    23.7多重继承
    23.8多重继承和virtual基类
    23.9本章小结
    附录A运算符的优先级与结合律
    附录B ASCII字符集
    附录C基本数据类型
    附录D计数系统
    附录E预处理器索引
    展开

    前     言

    前言
    “The chief merit of language is clearness...?”
    —Galen
    欢迎走进C++计算机编程语言世界, 开始学习《C++大学教程(第九版)》。这本书为读者呈现了最前沿的计算技术。根据ACM和IEEE这两大专业组织就课程设置的建议,它非常适合作为入门课程的教材。对于还未意识到这点的读者, 请阅读封底和封底内页, 其凝练了本书的精髓。同时, 此前言为学生、 教师和专业人士提供了更多的相关细节。本书的核心是Deitel式的大量“活代码”(Livecode)。也就是说, 所有的概念都在完整的可运行的C++程序中得以阐述, 而非通过一些零碎的代码片段。每个例程的代码之后都提供了一个或多个运行实例。为了顺利地运行这些数以百计的例程, 请阅读在线章节“开始之前”(Before You Begin)(www.deitel.com/ books/cpphtp9/cpphtp9_BYB.pdf), 从而可以了解安装有Linux、 Windows或苹果公司的OS X等操作系统的计算机设置问题。在www.deitel.com/books/cpphtp9 和www.pearsonhighered.com/中可以获取所有的源代码相关在线章节和源代码可登录华信教育资源网(www.hxedu.com.cn)免费注册下载。。通过这些源代码, 可以边运行边理解每一个程序。我们相信这本教材及其辅助材料使大家的C++学习之旅既内容充实, 又具有挑战性和趣味性。在阅读教材的过程中若有问题,请随时访问deitel@deitel.com, 我们将在第一时间给予解答。此外, 通过访问www.deitel.com/books/cpphtp9, 或者加入Facebook(www.deitel.com/DeitelFan)、 Twitter (@deitel)、 Google+ (gplus.to/deitel)和LinkedIn (bit.ly/DeitelLinkedIn)等社会媒体社区, 以及订阅Deitel Buzz Online新闻组(www.deitel.com/newsletter/subscribe.html), 可以及时了解到关于这本教材的最新消息。C++11标准2011年发布的新的C++11标准在很大程度上激发了我们撰写《C++大学教程(第九版)》的积极性。《C++大学教程(第九版)》具有如下所列的一些关键C++11特性: ● 符合新的 C++11标准。广泛覆盖了图1所示的新的C++11标准特性。● 书中代码在业界三种主流C++11编译器上进行了全面的测试。所有代码示例均在GNU C++ 4.7、  Microsoft Visual C++ 2012 和 Apple LLVM in Xcode 4.5上通过测试。● 智能指针。智能指针通过提供内置指针之外的额外功能来帮助大家避免动态内容管理方面的错误。unique_ptr将在本书第17章而shared_ptr 和 weak_ptr将在第24章分别进行讨论。● 尽早涵盖标准库中的容器、 迭代器和算法, 并用C++11进行功能增强。本书将前版中到第22章才开始讲述的标准库中的容器、 迭代器和算法等内容, 提前到了第15章和第16章, 并且用一些C++11特性来增强。对数据结构的绝大多数需要可以通过重用这些标准库功能来满足。在第19章我们将展示如何为您量身定做自己的数据结构。● 在线的第24章“C++11: 其他主题”。这一章将介绍另外一些关于C++11的话题。新的C++11标准自2011年以来就可以采用了,但并不是所有的C++编译器已经完全实现了相应特性。如果在本书撰写时, 前述的三种主流编译器均实现了某个C++11特性, 那么我们一般会将该特性融入到一个活代码例子中并展开讨论。如果没有编译器实现这个特性, 那么通过一个粗斜体标题, 其后对它进行简要的讨论。随着C++11特性的实现, 许多相关的讨论在在线的第24中展开。这一章包括对正则表达式、 shared_ptr和weak_ptr智能指针、 转移语义等更多特性的描述。● 随机数生成、 模拟和游戏。为了使程序更加安全, 本书添加了C++11新的不确定性随机数生成功能的应用内容。《C++大学教程(第九版)》中的C++11特性all_of算法继承基类的构造函数不确定性随机数生成any_of算法insert容器成员函数返回迭代器none_of算法array容器is_heap算法数值转换函数auto类型推导is_heap_until算法nullptrbegin/end函数C++11中新的关键词override关键词cbegin/cend容器成员函数lambda表达式基于范围的for 语句模板类型中>>的编译器修复键值对的列表初始化正则表达式copy_if算法对象的列表初始化右值引用copy_n算法返回值的列表初始化作用域限定的枚举类型enumscrbegin/crend容器成员函数列表初始化一个动态分配的数组shared_ptr智能指针decltype列表初始化一个vectorshrink_to_fit vector/deque成员函数函数模板中默认类型参数构造函数调用中的列表初始化器指定一个枚举其常量的类型Defaulted成员函数long longint类型针对文件名的static_assert对象委托构造函数具有initializer_list参数的min和max算法针对文件名的string对象deleted成员函数minmax算法swap非成员函数explicit转换运算符minmax_element算法函数的尾随返回值类型final类move算法tuple可变参数模板final成员函数移动赋值运算符unique_ptr智能指针find_if_not算法move_backward算法无符号的long long intforward_list容器移动构造函数weak_ptr智能指针关联容器中的不可变键类内初始化器noexcept图1《C++大学教程(第九版)》中的C++11特性列表面向对象编程● 尽早接触对象的教学方法。本书在第1章就介绍对象技术的基本概念和术语, 在第3章开始开发自定义的类及对象。较早地接触对象和类, 可以使学生直接“考虑对象”和更彻底地掌握这些概念。● C++标准库的string类。C++提供两种类型的字符串——string类对象(将在第3章开始使用)和C风格的字符串。我们已经将大多数出现的C字符串替换为C++的string类对象, 这样可以使程序更加鲁棒, 并可以消除由操作C的字符串而引起的安全问题。在本书中, 我们仍继续讨论C字符串, 以便做好今后应对业界遗留代码中C字符串的准备。而在新的开发中, 应当首选string类的对象。● C++标准库的array类。对于数组, 我们现在直接使用C++标准库的array类模板, 而非内置的C风格的基于指针的数组。由于内置的C风格数组在C++中仍有用武之地, 并且还有不少遗留代码需要处理, 因此本书还是会介绍内置的C风格数组。C++提供三种类型的数组——array类模板对象、 vector类模板对象(这两者将在第7章开始使用)和C风格的基于指针的数组(将在第8章讨论)。根据情况, 我们在这整本书中将使用array类模板来代替C风格的数组。当然, 在新的开发中, 大家应当首选array类模板对象。● 精心实现有价值的类。本书的一个关键目标就是为构建有意义的类做好准备。在第11章的实例研究中, 将介绍如何构建用户自定义的Array类。接着在第18章的练习题中, 则要求将该类转换成一个类模板。这样的安排可以使学习者真正领悟和欣赏类这个概念。并且, 在第10章的开篇部分, 通过一个关于string类模板的例程, 使大家在实现自定义的具有重载运算符的类之前, 有效地了解重载运算符的精妙用法。● 面向对象编程的实例研究。本书提供了横跨多个章节、 覆盖软件开发整个生命周期的若干实例研究, 包括第3~7章中的GradeBook类、 第9章中的Time类、 第11~12章中的Employee类。第12章还包含了关于C++内部如何实现多态性、 virtual函数和动态绑定的一张非常详细的图示, 以及相应的解释。● 可选学的实例研究: 使用UML进行ATM系统面向对象的设计及其C++实现。UML(统一建模语言)是面向对象系统建模的行业标准图形化语言。我们将在本书比较靠前的章节引入UML的内容。在线的第25章和第26章中包含一个可选学的关于使用UML进行面向对象设计的实例研究, 设计和实现一个简单的自动取款机(ATM)软件。我们对一份说明待建系统的典型需求文档进行仔细分析, 确定实现系统所需要的类、 类所拥有的属性和类所要展示的行为, 并详细说明类必须如何相互作用才能满足系统的需求。根据这样的设计我们产生一个完整的C++实现。据学生的普遍反馈, 该实例研究能够帮助他们“理顺所有的问题”, 真正理解面向对象。● 异常处理。我们在本书较早地介绍基本的异常处理概念。教师可以很容易地把第17章(异常处理的深入剖析)中的更多内容根据情况提前介绍。● 自定义基于模板的数据结构。本书在多章提供丰富的数据结构处理内容——参见图6所示的各章之间依赖关系示意图中的数据结构模块。● 三种编程范型。我们讨论结构化编程、 面向对象编程和泛型编程三种编程范型。教学特色● C++基础知识内容丰富。本书通过两章来透彻地介绍控制语句和算法的开发。● 第2章提供C++程序设计的简单介绍。● 实例。我们从计算机科学、 商务、 模拟、 游戏和其他主题等方面, 选择和设计了范围广泛的一些例程(如图2所示), 并纳入到本书中。实例Array类实例研究
    Author类
    银行账户计划条形图
    打印程序
    BasePlusCommissionEmployee类
    二叉树的创建和遍历
    BinarySearch测试程序
    洗牌和发牌
    ClientData类
    CommissionEmployee类
    编译和链接过程
    使用for的复利计算
    string对象向C字符串的转换
    计数器控制的循环
    掷骰子游戏的模拟
    信用查询程序
    Date类
    向下类型转换和运行时类型信息
    Employee类
    explicit构造函数
    fibonacci函数
    fill算法
    函数模板printArray的函数模板特化generate算法
    GradeBook类
    在声明中初始化一个数组
    由istringstream对象进行输入
    阶乘的迭代解法
    lambda表达式
    链表操作
    map类模板
    标准库的数学算法
    maximum函数模板
    归并排序程序
    multiset类模板
    new失败抛出bad_alloc
    PhoneNumber类
    投票分析程序
    多态性示范
    前置自增和后置自增
    priority_queue适配器类
    queue适配器类
    随机访问文件
    随机数生成
    递归函数factorial
    投掷六面骰子6 000 000次图2《C++大学教程(第九版)》中的实例列表实例SalariedEmployee类
    SalesPerson类
    标准库的搜索和排序算法
    顺序文件
    set类模板
    shared_ptr程序
    stack适配器类
    Stack类
    堆栈展开
    标准库string类程序
    流操纵符showbase
    string赋值和连接
    string成员函数substr
    使用for语句对整数求和
    Time类
    管理动态分配内存的unique_ptr对象
    使用正则表达式验证用户输入
    vector类模板图2(续)《C++大学教程(第九版)》中的实例列表● 受众。本书的实例非常适合于那些上初级和中级C++课程的计算机科学、 信息技术、 软件工程和商科等专业的学生。同时, 这本书也适于专业编程人员使用。● 自测题及答案。每章都包含了为自学而精心设计的自测题及其答案。● 有趣和富于挑战性的练习题。每章最后都提供了大量的练习题, 包括对一些重要术语和概念的回顾, 找出在代码实例中的错误, 编写单条的C++语句, 编写一小部分的C++类、 成员和非成员函数, 编写完整的C++的函数, 以及实现大的项目。图3列出了本书中的一些练习题名称, 包括社会实践练习题, 它们鼓励大家使用计算机和互联网去研究和解决一些有意义的实际问题。我们希望通过自身的价值观、 政治观和信仰完成这些练习题。● 插图和图表。本书包含了大量的表格、 线绘图、 UML图、 程序及程序输出。图4列出了书中的插图和图表。练习题机票预订系统
    高级的字符串操作练习
    冒泡排序
    构建自己的编译器
    构建自己的计算机
    薪金计算
    “低碳经济”的抽象类: 多态性
    洗牌和发牌问题
    计算机辅助教学
    计算机辅助教学:难度等级
    计算机辅助教学:监控学生表现
    计算机辅助教学:消除学生疲劳
    计算机辅助教学:问题分类
    用更健康的配料烹饪 
    掷双骰子游戏的改进
    信用额度问题
    纵横字谜游戏生成器
    密码问题德摩根定律
    掷骰子
    八皇后问题
    应急响应
    使用加密系统增强隐私
    Facebook用户基数增长
    斐波纳契数列 
    汽油哩数
    全球变暖事实测验
    猜数字游戏 
    猜字游戏
    健康记录骑士巡游
    打油诗
    迷宫遍历: 随机生成迷宫
    莫尔斯代码
    工资发放系统修正
    彼得?米纽伊特问题
    网络钓鱼扫描器儿童黑话游戏
    使用账户层次的多态银行程序
    毕达哥拉斯的三元组
    薪金计算器
    爱拉托逊斯筛法
    简单解密
    简单加密
    SMS语言
    垃圾邮件扫描器
    拼写检查程序
    目标心率计算器
    税收计划备选方案;“公平税”
    电话号码数字生成器
    歌曲“圣诞节的十二天”
    龟兔赛跑模拟
    汉诺塔问题
    世界人口增长图3《C++大学教程(第九版)》中的练习题列表插图和图表主要正文的插图和图表数据层次结构
    多个源文件程序的编译和链接过程
    二次多项式的求解顺序 
    GradeBook类图
    if单路选择语句的活动图
    if…else 双路选择语句的活动图
    public, protected 和private 继承
    Employee层次结构的UML类图
    virtual 函数调用的工作机制
    I/O流的模板层次结构两个链接在一起的自引用类对象
    ATM 实例研究的插图和图表
    从用户角度来看ATM系统的用例图
    表示类间关联关系的类图
    表示组合关系的类图
    ATM系统模型的类图
    具有属性的类
    ATM系统的状态图
    余额查询交易的活动图Withdrawal交易的活动图
    While循环语句UML活动图
    for 循环语句UML活动图
    do…while 循环语句UML活动图
    switch多路选择语句活动图 
    单入/单出的C++顺序、选择和循环语句 
    列表的图形表示
    以图形化方式表示的运算insertAtFront
    以图形化方式表示的运算insertAtBack
    以图形化方式表示的运算removeFromFront
    ATM系统中具有属性和操作的类
    执行余额查询的ATM 系统的通信图
    执行余额查询的通信图
    对Withdrawal的执行进行建模的顺序图
    允许用户在账户间转账的ATM系统修改版的用例图程序的按值传递和按引用传递的分析
    继承层次图
    函数调用栈和活动记录
    函数fibonacci的递归调用
    指针算数运算图
    CommunityMember继承层次
    Shape继承层次
    以图形化方式表示的运算removeFromBack
    单向循环链表
    双向链表
    双向循环链表
    二叉树的图形化表示
    表示类Car的组合关系的类图
    对于包含类Deposit的ATM系统建模的类图
    Deposit交易的活动图
    对Deposit的执行进行建模的顺序图图4《C++大学教程(第九版)》中的图示列表其他特性● 指针。本书对内置指针的功能, 以及它们与C风格的字符串和内置数组之间的密切关系做了十分全面的阐述。● 搜索和排序算法的可视表示, 并提供大O算法复杂度的简单分析。● 纸质出版的书包含核心内容, 附加内容以在线方式发布。 ● 关于调试器的附录。在本书的同步学习网站中提供了三个关于调试器的附录——附录H“Using the Visual Studio Debugger”(使用Visual Studio调试器)、 附录I“Using the GNU C++ Debugger”(使用GNU C++调试器)和附录J“Using the Xcode Debugger”(使用Xcode调试器)。安全的C++编程要想构建能够经得起病毒、 蠕虫和其他形式的“恶意软件”攻击的强有力系统是非常困难的。特别是在今天, 通过互联网, 这些攻击瞬时可发, 且可作用于全球。因此, 从软件开发生命周期的一开始就必须构建安全的软件, 这样才能大大降低软件的脆弱性。CERT协调中心(www.cert.org)的创建就是为了对系统攻击进行分析和做出迅速响应。CERT(计算机紧急响应小组, the Computer Emergency Response Team的缩写)是在卡耐基?梅隆大学软件工程研究所内的一个政府资助的机构。CERT发布和推广各种流行程序设计语言的安全编码标准, 从而帮助软件开发人员避免重蹈那些使系统无法抵御攻击的不良编程实践, 实现工业级强度的系统。在此, 我们非常感谢Robert C. Seacord。他是CERT的安全编码主任和卡耐基?梅隆大学计算机科学学院的兼职教授。Seacord先生是我们编写的《C++大学教程(第七版)》教材的技术审阅专家。他从安全的角度出发, 详细检查书中的C程序, 并建议我们遵循《CERT C安全编码标准》。在《C++大学教程(第九版)》中我们仍采用《CERT C安全编码标准》, 该标准可以在下面的网站中获得:
    令人高兴的发现是, 我们的书中已经在推荐这样的编码实践。我们根据这些实践标准升级书中的代码和讨论, 使本书更适合作为入门/中级水平的教材。如果想构建工业级强度的C++系统,可以考虑阅读由AddisonWesley Professional出版社出版、 Robert Seacord所著的Secure Coding in C and C++, Second Edition一书。在线内容也可登录华信教育资源网(www.hxedu.com.cn)免费注册下载。本书同步的学习网站访问地址是: 
    该网站包含如下的章节和附录, 它们是可以搜索的PDF格式: ● 第24章, C++11: 其他主题● 第25章, ATM实例研究(第I部分): 使用UML进行面向对象的设计● 第26章, ATM实例研究(第II部分): 实现一个面向对象的设计● 附录F, C遗留代码问题● 附录G, UML 2: 其他的示图类型● 附录H, 使用Visual Studio调试器● 附录I, 使用GNU C++调试器● 附录J, 使用Xcode调试器● 附录K, Mac OS X环境下的C++程序试运行(关于Windows和Linux环境的试运行见第1章)各章之间依赖关系示意图图5显示的是各章之间的相互依赖关系示意图, 这有助于教师安排自己的教学进度。《C++大学教程(第九版)》一书适合于计算机科学一年级和二年级的教学。该图表展示了本书的组织结构。教学方法《C++大学教程(第九版)》含有大量丰富的实例。我们强调程序的清晰性, 专注于构建设计精良的软件。采用活代码方式。本书拥有大量的“活代码”实例。对于绝大多数新的概念, 都用完整的、 能实际运行的C++程序进行介绍, 程序代码之后直接附有一个或者多个运行示例, 用于展示程序的输入/输出。在有些情况下, 书中使用了代码片段。但是, 为了确保其正确性,我们首先在一个完整的可运行程序中对它进行测试, 然后再复制并粘贴到本书中。学习目标。在开篇的名人名言之后, 列出了本章的一系列学习目标。编程提示。本书还包含很多编程提示, 目的在于帮助学生将学习重点放在程序开发的关键部分。这些提示和实践经验是我们70年来教学和业界经验的总结。良好的编程习惯
    良好的编程习惯关注的技术将有助于编写出更加清晰、 更易理解和更易于维护的程序。
    常见的编程错误
    指出这些常见的编程错误可以减少犯类似错误的可能性。
    图5各章之间依赖关系示意图
    错误预防技巧
    这些提示包含发现和消除程序错误的各种建议。事实上, 许多这样的提示描写的是如何在开始编写C++程序的第一时间防止错误的方方面面。
    性能提示
    这些提示提供了一些强调提高程序性能的方法, 使程序运行得更快, 或者使它们所占用的内存最少。
    可移植性提示
    这些可移植性提示将有助于编写出可以运行在不同平台上的代码。
    软件工程知识
    软件工程知识这一部分的提示突出了关于软件体系结构和设计的问题。这些问题往往影响到整个软件系统的构建, 特别是对一些大型的系统而言。
    摘要。在每章, 我们都以清单的形式逐节汇总了本章要点。索引。本书包含了规模庞大的索引。《C++大学教程(第九版)》使用的软件资源《C++大学教程(第九版)》的代码示例采用如下的C++开发工具进行编写: ● 微软公司免费的Windows桌面版Visual Studio Express 2012, 包括了Visual C++和其他的微软开发工具。该工具运行在Windows 7和Windows 8上,可以从下面的地址免费下载: 
    ● GNU免费的 GNU C++ (gcc.gnu.org/install/binaries.html), 大多数Linux系统都已经预装了GNU C++, 它同样可以在Mac OS X和Windows系统上安装。● 苹果公司的免费Xcode, OS X的用户可以从苹果的应用商店下载它。教师辅助资料具体申请方式请参见书末的“教学支持说明”, 或联系Teservice@phei.com.cn。具备申请资格的老师只可以通过Pearson Fducation的教师资源中心(www.pearsonhighered.com/irc)来获取以下的辅助资料: ● 解答手册。它涵盖了各章后大部分练习题的解答。我们已经新增了许多社会实践练习题, 大多数有解答。请不要给我们写信请求访问Pearson教师资源中心。对该中心的访问仅限于采用这本书进行教学的大学教师。教师只能联系Pearson Fducation的相应代理获得访问权限。如果你还不是一名注册的教师会员, 可以联系你的Pearson Fducation代理或者也可以访问www.pearsonhighered.com/ educator/replocator/。对于“项目”性质的练习没有提供解答。建议大家有机会多查看一下我们的编程项目资源中心: 
    
    在那里, 可以获得更多的额外练习和项目实践的锻炼机会。● 多项选择题的测验文件(大概每节两题)。● 可定制的PowerPoint幻灯片, 涵盖了书中的所有代码和图表, 还包括了总结书中各个要点的摘要。使用MyProgrammingLab进行在线实践和评估MyProgrammingLab可以帮助学生充分掌握程序设计的逻辑、 语义和语法。通过实践练习和即时且个性化的反馈, MyProgrammingLab对于常常纠结于基本概念和主流高级程序设计语言的初学者而言, 能够提高他们的编程能力。作为一个自学和作业工具,一门MyProgrammingLab课程包括数以百计的小型实践问题, 这些问题的组织围绕着本教材的结构。对于学生, 该系统自动检测他们所提交的代码之中的逻辑和语法错误,并提供有针对性的提示, 使学生能够弄明白错在何处和出错原因。对于教师, 系统提供一个综合的成绩簿, 可以全面跟踪正确和不正确的答案, 并保存了学生输入的代码以进行评阅。如果想了解教师和学生对MyProgrammingLab的反馈, 或者欲在课程教学中采用MyProgrammingLab, 请访问: www.myprogramminglab.com, 可以获得充分的示范。
    致谢
    
    首先感谢来自Deitel & Associates公司的Abbey Deitel和Barbara Deitel, 她们为此项目投入了大量的时间。Abbey参与了第1章的撰写, 她和 Barbara花费了很大的精力研究C++11的新功能。我们深感荣幸能与Pearson Fducation里一支才华横溢的专业出版队伍共同合作。特别感谢计算机科学执行主编Tracy Johnson的指导、 智慧和活力, 感谢Carole Snyder为组织审阅队伍和管理审阅过程所做的非凡工作, 感谢Bob Engelhardt为本书的出版所做的出色工作。审阅专家衷心地感谢我们这本书的每位审阅专家!这些专家既有制定C++11的C++标准委员会的现任和前任委员们, 又包括从事C++教学的学者和行业专家。他们在极其有限的时间内, 认真审阅了本书, 提出了许许多多宝贵的意见, 从而更好地保证了书中内容的质量。如果本书还存在瑕弊, 一定是我们自身的水平问题。第九版审阅专家:  Dean Michael Berris (Google, ISO C++委员会成员), Danny Kalev (C++专家, 注册系统分析员和 C++标准委员会前任成员), Linda M. Krause(Elmhurst College), James P. McNellis(Microsoft公司), Robert C. Seacord (SEI/CERT安全编码主任, Secure Coding in C and C++一书的作者)和José Antonio González Seco (Parliament of Andalusia)。其他最近版审阅专家:  Virginia Bailey(Jackson State University), Thomas J. Borrelli (Rochester Institute of Technology), Ed Brey (Kohler Co.), Chris Cox (AdobeSystems), Gregory Dai (eBay), Peter J. DePasquale (The College of New Jersey), John Dibling (SpryWare), Susan Gauch (University of Arkansas), Doug Gregor (Apple, Inc.), Jack Hagemeister (Washington State University), Williams M. Higdon (University of Indiana), Anne B. Horton (Lockheed Martin), Terrell Hull (Logicalis Integration Solutions), Ed JamesBeckham (Borland), WingNing Li (University of Arkansas), Dean Mathias (Utah State University), Robert A. McLain (Tidewater Community College), Robert Myers (Florida State University), Gavin Osborne (Saskatchewan Inst. of App. Sci. and Tech.), Amar Raheja (California State Polytechnic University, Pomona), April Reagan (Microsoft), Raymond Stephenson (Microsoft), Dave Topham (Ohlone College), Anthony Williams (作家和C++标准委员会成员) , 以及Chad Willwerth (University Washington, Tacoma)。我们也真诚地感谢广大读者, 能够在阅读的同时对于本书的改进提出宝贵的评论、 批评和建议。来函请发送至: 
    我们会及时给与答复。希望大家能在阅读《C++大学教程(第九版)》的过程中获得乐趣, 就像我们在编写这本书时一样。Paul DeitelHarvey Deitel
    
    作者简介
    
    Paul Deitel是Deitel & Associates公司的CEO和首席技术官, 毕业于麻省理工学院, 主修信息技术。在Deitel & Associates公司, 他已向业内客户讲授了几百次程序设计课程。客户主要包括思科、 IBM、 西门子、 Sun Microsystems、 戴尔、 高保真公司(Fidelity)、 位于肯尼迪航天中心的NASA、 美国家强风暴实验室(the National Severe Storm Laboratory) 、 白沙导弹射程公司(White Sands Missile Range)、 流浪者漂流软件公司(Rogue Wave Software)、 波音、 SunGard高等教育、 北电网络(Nortel Networks)、 彪马(Puma)、 iRobot、 Invensys和其他许多机构等。他和他的合作者Harvey M. Deitel博士, 是世界最畅销程序设计语言的教材、 专业书和视频的作者。Harvey Deitel博士是Deitel & Associates公司的董事长和首席战略官。在计算机领域50年的勤奋工作, 使他具有极其丰富的工业界和学术界经验。Detiel博士拥有麻省理工学院电气工程学士和硕士学位, 以及波士顿大学数学博士学位。他具有丰富的大学教学经验。在1991年与其子PaulDeitel成立Deitel & Associates公司之前, 已是波士顿大学的终身教授, 并担任计算机科学系的系主任。Deitel父子的出版物受到全球一致好评, 已翻译成中文、 韩文、 日文、 德文、 俄文、 西班牙文、 法文、 波兰语、 意大利文、 葡萄牙文、 希腊文、 乌尔都文和土耳其文。Deitel博士已为公司、 学术、 政府和军事方面的客户讲授程序设计课程达数百次之多。Deitel & Associates公司的企业培训由Paul Deitel和Harvey Deitel创建的Deitel & Associates公司是一家国际公认的创作和企业培训机构, 专业从事计算机程序设计语言、 对象技术、 移动应用开发、 Internet和Web软件技术的培训。公司的客户包括全球多家大型公司、 政府部门、 军事单位及学术机构。公司在全球范围的客户网站上, 提供主要的计算机程序设计语言和平台的教师指导式课程, 包括C++、 Visual C++、 C、 Java、 Visual C#、  Visual Basic、  XML、  Python、 对象技术、 Internet和Web编程、 Android应用开发、 objectiveC和iPhone应用开发, 以及其他不断增加的程序设计和软件开发的相关课程。通过与Prentice Hall/Pearson长达36年的出版合作, Deitel & Associates公司连续出版了大量引领时代的程序设计教材、 专业书籍、 直播课堂视频课程。读者可通过deitel@deitel.com与Deitel & Associates公司和作者联系。想要进一步了解Deitel的DiveInto系列企业培训课程情况, 请访问: 
    如果你所在的机构有全球现场性的教师指导式培训的需要, 请通过电子邮件与deitel@deitel.com联系。希望购买Detiel书籍、 直播课堂视频培训课程的个人请访问www.deitel.com。如果有公司、 政府、 军队或学术机构需要批量订购, 请直接与Pearson联系。
    展开

    作者简介

    本书暂无作者简介
  • 样 章 试 读
  • 图 书 评 价 我要评论
华信教育资源网