新書推薦:
《
夏天,19岁的肖像(青鲤文库)岛田庄司两次入围日本通俗文学奖直木奖的作品 ,同名电影由黄子韬主演!
》
售價:HK$
49.5
《
图解机械工程入门
》
售價:HK$
96.8
《
股市长线法宝(第6版)
》
售價:HK$
140.8
《
中文版SOLIDWORKS 2024机械设计从入门到精通(实战案例版)
》
售價:HK$
98.9
《
纯数学教程
》
售價:HK$
85.8
《
威尔士史:历史与身份的演进
》
售價:HK$
107.8
《
黄金、石油和牛油果:16件商品中的拉丁美洲发展历程
》
售價:HK$
86.9
《
母亲的选择:看不见的移民保姆与女性工作
》
售價:HK$
74.8
編輯推薦:
选自国外畅销多年的经典的编程教材系列。经过几十年的更新与完善,内容精炼,例题丰富,代码成熟,并提供有效的学习方法。适合学校教学与自学的优秀教材。
內容簡介:
本书是一本C++编程方面的优秀教程,全面地介绍了过程式编程与面向对象编程的原理和方法,细致地分析了各种性能问题、移植性问题和可能出错的地方,介绍了如何提高软件工程质量,并提供了丰富的自测练习和项目练习。可以说本书是非常好的学习C++语言的教程之一,是学习C++的"宝典”。
關於作者:
张引,浙江大学计算机科学与技术学院副教授,1999年于浙江大学计算机系取得计算机应用博士学位并留校工作至今。主要研究领域为图形图像、模式识别、数据分析与挖掘、知识表达与发现。 Paul Deitel和Harvey Deitel是全球畅销的编程语言教材和专业图书作家,“How to Program”系列是其最负盛名的一套计算机编程教材,已经销售近40年,并被翻译成中文在内的十几种语言。他们成立的Deitel & Associates公司是一家国际知名的企业培训和写作公司,专门进行计算机编程语言、对象技术、移动应用开发及Internet和Web软件技术方面的培训和写作,出版了一流的编程专业的大学教材、 专业图书以及LiveLessons视频课程。
目錄 :
目录
第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的非格式化的IO
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式的大量活代码Livecode。也就是说, 所有的概念都在完整的可运行的C程序中得以阐述, 而非通过一些零碎的代码片段。每个例程的代码之后都提供了一个或多个运行实例。为了顺利地运行这些数以百计的例程, 请阅读在线章节开始之前(Before You Begin)(www.deitel.com bookscpphtp9cpphtp9_BYB.pdf), 从而可以了解安装有Linux、 Windows或苹果公司的OS X等操作系统的计算机设置问题。在www.deitel.combookscpphtp9 和www.pearsonhighered.com中可以获取所有的源代码相关在线章节和源代码可登录华信教育资源网www.hxedu.com.cn免费注册下载。。通过这些源代码, 可以边运行边理解每一个程序。我们相信这本教材及其辅助材料使大家的C学习之旅既内容充实, 又具有挑战性和趣味性。在阅读教材的过程中若有问题,请随时访问deitel@deitel.com, 我们将在第一时间给予解答。此外, 通过访问www.deitel.combookscpphtp9, 或者加入Facebook(www.deitel.comDeitelFan)、 Twitter (@deitel)、 Google(gplus.todeitel)和LinkedIn (bit.lyDeitelLinkedIn)等社会媒体社区, 以及订阅Deitel Buzz Online新闻组(www.deitel.comnewslettersubscribe.html), 可以及时了解到关于这本教材的最新消息。C11标准2011年发布的新的C11标准在很大程度上激发了我们撰写《C大学教程(第九版)》的积极性。《C大学教程(第九版)》具有如下所列的一些关键C11特性: ● 符合新的 C11标准。广泛覆盖了图1所示的新的C11标准特性。● 书中代码在业界三种主流C11编译器上进行了全面的测试。所有代码示例均在GNU C 4.7、 Microsoft Visual C 2012 和 Apple LLVM in Xcode 4.5上通过测试。● 智能指针。智能指针通过提供内置指针之外的额外功能来帮助大家避免动态内容管理方面的错误。unique_ptr将在本书第17章而shared_ptr 和 weak_ptr将在第24章分别进行讨论。● 尽早涵盖标准库中的容器、 迭代器和算法, 并用C11进行功能增强。本书将前版中到第22章才开始讲述的标准库中的容器、 迭代器和算法等内容, 提前到了第15章和第16章, 并且用一些C11特性来增强。对数据结构的绝大多数需要可以通过重用这些标准库功能来满足。在第19章我们将展示如何为您量身定做自己的数据结构。● 在线的第24章C11: 其他主题。这一章将介绍另外一些关于C11的话题。新的C11标准自2011年以来就可以采用了,但并不是所有的C编译器已经完全实现了相应特性。如果在本书撰写时, 前述的三种主流编译器均实现了某个C11特性, 那么我们一般会将该特性融入到一个活代码例子中并展开讨论。如果没有编译器实现这个特性, 那么通过一个粗斜体标题, 其后对它进行简要的讨论。随着C11特性的实现, 许多相关的讨论在在线的第24中展开。这一章包括对正则表达式、 shared_ptr和weak_ptr智能指针、 转移语义等更多特性的描述。● 随机数生成、 模拟和游戏。为了使程序更加安全, 本书添加了C11新的不确定性随机数生成功能的应用内容。《C大学教程(第九版)》中的C11特性all_of算法继承基类的构造函数不确定性随机数生成any_of算法insert容器成员函数返回迭代器none_of算法array容器is_heap算法数值转换函数auto类型推导is_heap_until算法nullptrbeginend函数C11中新的关键词override关键词cbegincend容器成员函数lambda表达式基于范围的for 语句模板类型中>>的编译器修复键值对的列表初始化正则表达式copy_if算法对象的列表初始化右值引用copy_n算法返回值的列表初始化作用域限定的枚举类型enumscrbegincrend容器成员函数列表初始化一个动态分配的数组shared_ptr智能指针decltype列表初始化一个vectorshrink_to_fit vectordeque成员函数函数模板中默认类型参数构造函数调用中的列表初始化器指定一个枚举其常量的类型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大学教程(第九版)》中的C11特性列表面向对象编程● 尽早接触对象的教学方法。本书在第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类
银行账户计划条形图
打印程序
BasePlusCommission