C入门到精通免费下载Word文件下载.docx
- 文档编号:21257410
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:65
- 大小:46.82KB
C入门到精通免费下载Word文件下载.docx
《C入门到精通免费下载Word文件下载.docx》由会员分享,可在线阅读,更多相关《C入门到精通免费下载Word文件下载.docx(65页珍藏版)》请在冰豆网上搜索。
C++而不再
简单地把
C++认为是
C语言的超集本书正是新版本
C++的写照通过本书你可以重新审视
C++语言这是我翻译过程中最为真切的体会它纠正了我过去对于
C++语言的一些误解虽
然我从
1993年开始就一直在使用
C++但是直到阅读了这本书之后我才从真正意义上全面
地认识了
C++语言
本书的权威性无需我多说看看本书原著的前言了解了两位作者的背景之后你就可以
知道这本书是经验和标准的完美结合
StanleyLippman从
1984年开始一直从事
C++方面的
工作
在
C++的实现与应用方面有着丰富的经验
本书前两个版本的成功也证明了他在阐释
C++语言方面的独到之处
eLajoie从
1990年开始成为
C++标准委员会的一名成员并且
承担了很重要的职务由于她的参与毫无疑问本书一定是与标准兼容的
讲述
C++的书非常多并且不乏优秀和经典之作在如此众多的
C++书籍中本书仍具有
不可替代的地位我想主要的原因在于本书具有以下几个特色
l内容广阔从本书的规模厚度就可以看出这一点
C++语言融入了大量优秀的特
性其内容的丰富程度已经远非
C语言所能及在所有的
C++书籍中本书的覆盖面是最为广
阔的从最基本的
C++程序设计到面向对象程序设计以及基于模板的程序设计面面俱到
而且讲解细致入微值得仔细品味
3叙述内容的安排
C++是一门多风格的程序设计语言
multi-paradigmProgramming
language不仅支持面向对象程序设计也支持其他的程序设计思想本书的叙述结构正体现
了
C++的这种特点作者从程序设计思想的角度分别讲述了
C++的各种语言要素便读者比较
2许多实际的范例程序纯粹的技术讲解总是非常枯燥的但是阅读本书并不感觉枯燥
因为作者在介绍每一部分内容的时候都结合一个实际的例子读者通过这些例子能够很容易地
掌握相应的技术要点并且看到每一种技术的实际用法这是本书之所以引人入胜的重要原因
之一
II译序
容易抓住C++语言的本质特征
4与编译器无关遵从C++标准本书的内容并不特定于某一个C++编译器实现而
是适用于所有与C++标准兼容的编译器作者在讲解过程中也指出了编译器的一些内部考虑
例如编译器如何在各种上下文环境中解析重载函数如何处理除式类型转换等等这些内
容有利于加深读者对C++的理解
5配套的练习在每一节讲解之后作者给出了一些练习这些练习反映了这一节的中
心内容读者通过这些练习可以巩固所学的知识所以本书也可以被用作教材用于系统全
面地学习C++语言
虽然本书书名C++Primer的中文含义是C++初级读本
但是它绝对不是一本很轻
松的入门教材
特别是关于名字空间
函数重载解析过程
模板机制和泛型算法
generic
algorithms等内容并不是一个C++初学者能够很快掌握的如果你以前没有看过其他的C++
书籍那么可能需要反复阅读多遍才能掌握本书讲述的内容如果你已经有了C++的基础比
如已经看过其他的C++入门书籍那么阅读本书可以让你快速掌握C++的要点如果你是
一名有多年C++实践经验的程序员那么阅读本书可以让你重新理解C++总之这是一本很
好的学习和参考书籍值得你反复阅读但是正如书名所指示的它不是一本高级书籍按
照我个人理解它的技术水准应该在中等偏深一点的层次上
本书的翻译工作由我和张丽共同完成张丽完成了初稿的翻译工作我做了第二遍翻译检
查工作书中每一句话我都认真检查过个别地方还修改了原著的一些错误C++中有些术语
还没有统一的中文说法对于这些术语的处理我们尽可能地做到符合中文的语言习惯读者
可以参考本书最后所附的英汉对照索引这份索引是由中国电力出版社的诸位编辑手工制作完
成的他们是刘江朱恩从陈维宁程璐关敏刘君夏平宋宏姚贵胜常虹乔晶
阎宏感谢他她们的辛勤劳动
在翻译过程中不断收到读者来信或者来电询问这本书的出版情况我理解读者对于一本
好书的迫切心情我的想法是有关C++的书籍和资料如此之多所以学习C++不一定非要
阅读这本书但是它可以加快你学习的步伐并且帮助你深入而全面地理解C++既然你已经
看到了这本书那就不要错过吧
这本书不会让你失望的我坚信这一点
潘爱民
北京大学燕北园
前言
本书第二版和第三版之间的变化非常大其中最值得注意的是
C++已经通过了国际标
准化这不但为语言增加了新的特性比如异常处理运行时刻类型识别
RTTI名字空
间内置布尔数据类型新的强制转换方式而且还大量修改并扩展了现有的特性比如模
板
template支持面向对象
object-oriented和基于对象
object-based程序设计所需
要的类
class机制嵌套类型以及重载函数的解析机制也许更重要的是一个覆盖面非
常广阔的库现在成了标准
C++的一部分其中包括以前称为
STL标准模板库的内容新
的
string类型一组顺序和关联容器类型比如
vectorlistmap和
set以及在这些类型
上进行操作的一组可扩展的泛型算法
genericalgorithm都是这个新标准库的特性本书
不但包括了许多新的资料而且还阐述了怎样在
C++中进行程序设计的新的思考方法简而
言之实际上不但
C++已经被重新创造本书第三版也是如此
在第三版中不但对语言的处理方式发生了根本的变化而且作者本身也发生了变化
首先我们的人数已经加倍而且我们的写作过程也已经国际化了尽管我们还牢牢扎根
于北美大陆
StanLippman是美国人
eLajoie是加拿大人最后这种双作者关系也
反映了
C++团体的两类主要活动
Stan现在正在迪斯尼动画公司
WaltDisneyFeature
Animation*致力于以
C++为基础的
3D计算机图形和动画应用而
e正专心于
C++的定
义与实现同时她也是
C++标准的核心语言小组的主席**以及
IBM加拿大实验室的
C++编
译器组的成员
Stan是
Bell实验室中与
BjarneStroustrupC++的发明者一起工作的早期成员之一
从
C++方面的工作
Stan曾经致力于原始
C++编译器
cfront的各种实
现从
1986年的版本
1.1到版本
3.0并领导了
2.1和
3.0版本的开发组之后他参与了
Stroustrup领导的
FoundationResearchProject项目中关于程序设计环境的对象模型部分
e作为
IBM加拿大实验室
C++编译器组的成员已经有八年时间了从
1990年开始她
成为
C++标准委员会的成员她曾经担任委员会的副主席三年日前担任核心语言小组委员
会的主席已经达四年之久
本书第三版是一个大幅修订的版本不仅反映了语言的变化和扩展也反映了作者洞察
力和经验的变化
*StanLippman现已受雇于
Microsoft成为
VisualC++.Net的架构设计师
**José
eLajoie现正在滑铁卢大学攻读硕士学位.已不再担任该委员会的主席现任主席为
Sun公司的
Steve
Clamage
IV译序
本书的结构
本书为
C++国际标准进行了全面的介绍在此意义上它是一个初级读本
primer
它提供了一种指导性的方法来描述
C++语言但是它也为
C++语言提供了一种简单而温
和的描述从这个角度来看它不是一本初级读物
C++语言的程序设计要素比如异常
处理容器类型面向对象的程序设计等等都在解决特定问题或程序设计任务的上下文环
境中展示出来
C++语言的规则比如重载函数调用的解析过程以及在面向对象程序设计下
支持的类型转换本书都有广泛的论述这似乎超出了一本初级读本的范畴我们相信为
了加强读者对于
C++语言的理解覆盖这些内容是必要的对于这些材料读者应该不时地
回头翻阅而不是一次消化了事如果开始的时候你发现这些内容比较难以接受或者过于枯
燥请把它们放到一边以后再回头来看——我们为这样的章节加上了特殊的记号
阅读本书不需要具备
C语言的知识但是熟悉某些现代的结构化语言会使学习进展更
快一些本书的意图是作为学习
C++的第一本书而不是学习程序设计的第一本书为了确
保这一点我们会以一个公共的词汇表作为开始然而开始的章节涵盖了一些基本的概念
比如循环语句和变量等有些读者可能会觉得这些概念太浅显了不必担心深层的内容很
快就会看到
C++的许多威力来自于它对程序设计新方法的支持以及对程序设计问题的思考方式
因此要想有效地学习使用
C++不要只想简单地学会一组新的语法和语义为了使这种学
习更加容易本书将围绕一系列可扩展的例子来组织内容这些例子被用来介绍各种语言特
性的细节同时也说明了这些语言特性的动机所在当我们在一个完整例子的上下文环境中
学习语言特性时对这些特性为什么会有用处也就变得很清楚了它会使我们对于何时以
及怎样在实际的问题解决过程中使用这些特性有一些感觉另外把焦点放在例子上可
使读者能够尽早地使用一些概念随着读者的知识基础被建立起来之后这些概念会进一步
完整地解释清楚本书前面的例子含有
C++基本概念的简单用法读者可以先领略一下
C++
中程序设计的概貌而不要求完全理解
C++程序设计和实现的细节
第
1章和第
2章形成了一个独立完整的
C++介绍和概述第一篇的目的是使我们快速地
理解
C++支持的概念和语言设施以及编写和执行一个程序所需要的基础知识读完这部分
内容之后你应该对
C++语言有了一些认识但是还谈不上真正理解
C++这就够了那是
本书余下部分的目的
1章向我们介绍了语言的基本元素内置数据类型变量表达式语句以及函数
它将介绍一个最小的合法的
C++程序简要讨论编译程序的过程介绍所谓的预处理器
preprocessor以及对输入和输出的支持它给出了多个简单但却完整的
C++程序鼓励
读者亲自编译并执行这些程序第
2章介绍了
C++是如何通过类机制为基于对象和面向对
象的程序设计提供支持的同时通过数组抽象的演化过程来说明这些设计思想另外它简
要介绍了模板名字空间异常处理以及标准库为一般容器类型和泛型程序设计提供的支
持这一章的进度比较快有些读者可能会觉得难以接受如果是这样我们建议你跳过这
一章以后再回过头来看它
C++的基础是各种设施它们使用户能够通过定义新的数据类型来扩展语言本身这些
V译序
新类型可以具有与内置类型一样的灵活性和简单性掌握这些设施的第一步是理解基本语言
本身第
3章到第
6章第二篇在这个层次上介绍了
3章介绍了
C++语言预定义的内置和复合数据类型以及
C++标准库提供的
string
complexvector类数据类型这些类型构成了所有程序的基石第
4章详细讨论了
支持的表达式比如算术关系赋值表达式语句是
C++程序中最小的独立单元它是第
5章的主题
C++标准库提供的容器类型是第
6章的焦点我们不是简单地列出所有可用的
操作而是通过一个文本查询系统的实现来说明这些容器类型的设计和用法
7章到第
12章第三篇集中在
C++为基于过程化的程序设计所提供的支持上第
7
章介绍
C++函数机制函数封装了一组操作它们通常形成一项单一的任务如print()名
字后面的括号表明它是一个函数关于程序域和变量生命期的概念以及名字空间设施的
讨论是第
8章的主题第
9章扩展了第
7章中引入的关于函数的讨论介绍了函数的重载
函数重载允许多个函数实例它们提供一个公共的操作共享一个公共的名字但是要求
不同的实现代码例如我们可以定义一组
print()函数来输出不同类型的数据第
10章介
绍和说明函数模板的用法函数模板为自动生成多个函数实例可能是无限多个提供了一
种规范描述
prescription这些函数实例的类型不同但实现方式保持不变
C++支持异常处理设施异常表示的是一个没有预料到的程序行为比如所有可用的程
序内存耗尽出现异常情况的程序部分会抛出一个异常——即程序的其他部分都可以访问到
程序中的某个函数必须捕获这个异常并做一些必要的动作对于异常处理的讨论跨越了两章
11章用一个简单的例子介绍了异常处理的基本语法和用法该例子捕获和抛出一个类类型
classtype的异常因为在我们的程序中实际被处理的异常通常是一个面向对象类层次
结构的类对象所以关于怎样抛出和处理异常的讨论一直继续到第
19章也就是在介绍面
向对象程序设计之后
12章介绍标准库提供的泛型算法集合看一看它们怎样和第
6章的容器类型以及内
置数组类型互相作用这一章以一个使用泛型算法的程序设计作为开始第
6章介绍的
iterator
迭代器在第
12章将进一步讨论因为它们为泛型算法与实际容器的绑定提供了粘合剂
这一章也介绍并解释了函数对象的概念函数对象使我们能够为泛型算法中用到的操作符比
如等于或小于操作符提供另一种可替换的语义关于泛型算法在附录中有详细说明并带
有用法的示例
13章到第
16章第四篇的焦点集中在基于对象的程序设计上——即创建独立的抽
象数据类型的那些类设施的定义和用法通过创建新的类型来描述问题域
C++允许程序员
在写应用程序时可以不用关心各种乏味的簿记工作应用程序的基本类型可以只被实现一次
而多次被重用这使程序员能够将注意力集中在问题本身而不是实现细节上这些封装数
据的设施可以极大地简化应用程序的后续维护和改进工作
13章集中在一般的类机制上怎样定义一个类信息隐藏的概念即把类的公有
接口同私有实现分离以及怎样定义并封装一个类的对象实例这一章还有关于类域嵌
套类类作为名字空间成员的讨论
14章详细讨论
C++为类对象的初始化析构以及赋值而提供的特殊支持为了支持
这些特殊的行为需要使用一些特殊的成员函数分别是构造函数析构函数和拷贝赋值操
作符这一章我们还将看一看按成员初始化和拷贝的主题即指一个类对象被初始化为或者
VI译序
赋值为该类的另一个对象以及为了有效地支持按成员初始化和拷贝而提出的命名返回值
namedreturnvalue扩展
15章将介绍类特有的操作符重载首先给出一般的概念和设计考虑然后介绍一些
特殊的操作符如赋值下标调用以及类特有的
new和
delete操作符这一章还介绍了类
的友元它对一个类具有特殊的访问特权及其必要性然后讨论用户定义的转换包括底
层的概念和用法的扩展实例这一章还详细讨论了函数重载解析的规则并带有代码示例说
明
类模板是第
16章的主题类模板是用来创建类的规范描述其中的类包含一个或多个
参数化的类型或值例如一个
vector类可以对内含的元素类型进行参数化一个
buffer类
可以对内含的元素类型以及缓冲区的大小进行参数化更复杂的用法比如在分布式计算中
IPC接口寻址接口同步接口等都可以被参数化这一章讨论了怎样定义类模板怎样
创建一个类模板特定类型的实例怎样定义类模板的成员成员函数静态成员和嵌套类型
以及怎样用类模板来组织我们的程序最后以一个扩展的类模板的例子作为结束
面向对象的程序设计和
C++的支持机制是第
171819和
20章第五篇的主题第
17章介绍了
C++对于面向对象程序设计主要要素的支持继承和动态绑定在面向对象的程
序设计中用父/子关系也称类型/子类型关系来定义有共同行为的各个类类不用
重新实现共享特性它可以继承了父类的数据和操作子类或者子类型只针对它与父类不同
的地方进行设计例如我们可以定义一个父类
Employee以及两个子类型
TemporaryEmpl
和
Manager这些子类型继承了
Employee的全部行为它们只实现自己特有的行为
继承的第二个方面称为多态性是指父类型具有引用由它派生的任何子类型的能
力例如一个
Employee可以指向自己的类型也可以指向
TemporaryEmpl或者
Manager
动态绑定是指在运行时刻根据多态对象的实际类型来确定应该执行哪个操作的解析能力
C++中这是通过虚拟函数机制来处理的
17章介绍了面向对象程序设计的基本特性这一章说明了如何设计和实现一个
Query
类层次结构用来支持第
6章实现的文本查询系统
18章介绍更为复杂的继承层次结构多继承和虚拟继承机制使得这样的层次结构成
为可能这一章利用多继承和虚拟继承把第
16章的模板类例子扩展成一个三层的类模板层
次结构
19章介绍
RTTI运行时刻类型识别设施使用
RTTI我们的程序在执行过程中可
以查询一个多态类对象的类型例如我们可以询问一个
Employee对象它是否实际指向
一个
Manager类型另外第
19章回顾了异常处理机制讨论了标准库的异常类层次机构
并说明了如何定义和处理我们自己的异常类层次结构这一章也深入讨论了在继承机制下重
载函数的解析过程
20章详细说明了如何使用
C++的
iostream输入/输出库它通过例子说明了一般的数
据输入和输出说明了如何定义类特有的输入输出操作符实例如何辨别和设置条件状态
如何对数据进行格式化
iostream库是一个用虚拟继承和多继承实现的类层次结构
本书以一个附录作为结束附录给出了每个泛型算法的简短讨论和程序例子这些算法
按字母排序以便参考
最后我们要说的是无论谁写了一本书他所省略掉的往往与他所讲述的内容一样
VII译序
重要
C++语言的某些方面比如构造函数的工作细节在什么条件下编译器会创建内部临
时对象或者对于效率的一般性考虑虽然这些方面对于编写实际的应用程序非常重要但
是不适合于一本入门级的语言书籍在开始写作本书第三版之前
StanLippman写的
Inside
theC++ObjectModel参见本前言最后所附的参考文献中的
LIPPMAN96a包含了许
多这方面的内容当读者希望获得更详细的说明特别是讨论基于对象和面向对象的程序设
计时本书常常会引用该书中的讨论
本书故意省略了
C++标准库中的某些部分比如对本地化和算术运算库的支持
C++标
准库非常广泛要想介绍它的所有方面则远远超出了本书的范围在后面所附的参考文献
中某些书更详细地讨论了该库见
MUSSER96和
STROUSTRUP97我们相信在
这本书出版之后一定还会有更多的关于
C++标准库各个方面的书面世
第三版的变化
本书第三版的变化主要是以下四个方面
1.涵盖了语言所增加的新特性异常处理运行时刻类型识别名字空间内置
bool
类型新风格的类型强制转换
2.涵盖了新的
C++标准库包括
complex和
string类型
auto_ptr和
pair类型顺序容
器和关联容器类型主要是
listvectormapset容器以及泛型算法
3.对原来的文字作了调整以反映出标准
C++对原有语言特性的精炼变化以及扩展
语言精炼的一个例子是现在能够前向声明一个嵌套类型这在以前是不允许的语言变化
的一个例子是一个虚拟函数的派生类实例能够返回一个基类实例的返回类型的派生类
这种变化支持一个被称为
clone或
factory的方法关于
clone()虚拟函数见
17.4.7节说明
对原有语言特性进行扩展的一个例子是现在可以显式地指定一个函数模板的一个或多个模
板实参实际上模板已经被大大地扩展了差不多已经成为一个新特性
4.加强了对
C++高级特性的处理和组织方式尤其是对于模板类以及面向对象程序
设计这几年
Stan从一个相对较小的
C++提供者团体转到了一般的
C++用户团体这种影响
使他相信越是深入地了解问题则程序员越是能够高明地使用
C++语言因此在第三版
中许多情况下我们已经把焦点转移到如何更好地说明底层特性的概念以及怎样最好地
使用它们并在适当的时候指出应该避免的潜在陷阱
C++的未来
在出版这本书的时候
ISO/ANSI++标准委员会已经完成了
C++第一个国际标准的技术
工作该标准已于
1998年的夏天由
ISO公布
C++标准公布之后支持标准
C++编译器实现出将很快会推出随着标准的公布
C++语言的进化将会稳定下来这种稳定性使得以标准
C++编写的复杂的程序库可以被用
来解决工业界特有的问题因此在
C++世界中我们将会看到越来越多的
C++程序库
一旦标准被公布标准委员会仍然会继续工作当然步伐会慢下来以解决
C++标准
的用户所提出的解释请求这会导致对
C++标准作一些细微的澄清和修正如果需要国际
VIII译序
标准将会每五年修订一次以考虑技术的变化
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 入门到精通免费下载 入门 精通 免费 下载