Advanced C++中文版
[特价中]基本信息
- 作者: [美]James O.Coplien [作译者介绍]
- 译者: 宛延闿 李石乔 苏文
- 丛书名: 深入C++系列
- 出版社:中国电力出版社
- ISBN:750831915X
- 上架时间:2004-1-15
- 出版日期:2004 年2月
- 开本:16开
- 页码:320
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > C++ > C++
合作专区 > 微软技术图书 > 微软程序设计 > 微软C/C++/VC++
内容简介回到顶部↑
书籍
计算机书籍
假定读者已经具备c++基本知识,本书通过展示c++语言风格和习惯用法,帮助读者提升c++的程序设计经验。这些方法是围绕c++支持的抽象机制实施的:抽象数据类型,继承结构中的组合类型,面向对象程序设计以及多重继承。本书还展示了c++语言间接支持的核心习惯用法,诸如虚拟构造函数、原型对象以及高级垃圾收集技术。
本书要点:
.展示了使用c++高级技术所获得的好处和潜在的缺陷。
.用少而精的例子展示如何有效地组合c++抽象机制。
.提供了大量面向对象设计转换成c++实现的准则。
.展示了如何用模板支持可重用性。
.描述了重要的大型系统开发问题,包括库结构的设计、异常处理和分布式处理。
. 本书是c++系统程序员或应用程序员工作的必备手册。
[font color="#ff0000"]james coplien[/font]先在威斯康星大学获得电气与计算机工程学士学位,后又在该大学获得计算机科学硕士学位。他在贝尔实验室的软件产品研发部门工作,在这个部门从一开始就使用c++程序设计语言。近年来致力于大型面向对象系统的开发环境、交付平台以及故障检测他现在是大型面向对象技术项日的顾问。
计算机书籍
假定读者已经具备c++基本知识,本书通过展示c++语言风格和习惯用法,帮助读者提升c++的程序设计经验。这些方法是围绕c++支持的抽象机制实施的:抽象数据类型,继承结构中的组合类型,面向对象程序设计以及多重继承。本书还展示了c++语言间接支持的核心习惯用法,诸如虚拟构造函数、原型对象以及高级垃圾收集技术。
本书要点:
.展示了使用c++高级技术所获得的好处和潜在的缺陷。
.用少而精的例子展示如何有效地组合c++抽象机制。
.提供了大量面向对象设计转换成c++实现的准则。
.展示了如何用模板支持可重用性。
.描述了重要的大型系统开发问题,包括库结构的设计、异常处理和分布式处理。
. 本书是c++系统程序员或应用程序员工作的必备手册。
[font color="#ff0000"]james coplien[/font]先在威斯康星大学获得电气与计算机工程学士学位,后又在该大学获得计算机科学硕士学位。他在贝尔实验室的软件产品研发部门工作,在这个部门从一开始就使用c++程序设计语言。近年来致力于大型面向对象系统的开发环境、交付平台以及故障检测他现在是大型面向对象技术项日的顾问。
作译者回到顶部↑
本书提供作译者介绍
James Coplien先在威斯康星大学获得电气与计算机工程学士学位,后又在该大学获得计算机科学硕士学位。他在贝尔实验室的软件产品研发部门工作,在这个部门从一开始就使用C++程序设计语言。近年来致力于大型面向对象系统的开发环境、交付平台以及故障检测。他现在是大型面向对象技术项目的顾问。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
译者序
序 言
第1章 引言
1.1 c++语言演变的历史
1.2 处理复杂结构的习惯用法
1.3 对象
1.4 设计和语言
练习
第2章 数据抽象和抽象数据类型
2.1 类
2.2 对象转换
2.3 构造函数和析构函数
2.4 内联(inline)函数
2.5 静态数据成员的初始化
2. 6 作用域和const
2.7 全局对象、常数和静态类成员初始化次序
2.8 类对象成员函数的const执行
2.9 指向成员函数的指针
2.10 程序组织的习惯约定
练习
序 言
第1章 引言
1.1 c++语言演变的历史
1.2 处理复杂结构的习惯用法
1.3 对象
1.4 设计和语言
练习
第2章 数据抽象和抽象数据类型
2.1 类
2.2 对象转换
2.3 构造函数和析构函数
2.4 内联(inline)函数
2.5 静态数据成员的初始化
2. 6 作用域和const
2.7 全局对象、常数和静态类成员初始化次序
2.8 类对象成员函数的const执行
2.9 指向成员函数的指针
2.10 程序组织的习惯约定
练习
译者序回到顶部↑
当今C++语言的使用已相当普及,它已深入到信息产业的各个领域。基于这种状况,对C++语言的风格和习惯用法的研究,促进C++语言的应用和发展是很有必要的。
C++是一种混合性语言,它既具有独特的面向对象特征,又保留了传统的高效结构C语言的主要特征。C++既能提供给程序开发者以面向对象思维开发的能力,又不会失去内存运行效率,并能在普通的计算机硬件上产生高质量的软件产品。但,C++更富于表现力蕴涵在C++软件结构的语言风格和习惯用法上。程序设计语言的风格来自于语言专家的经验,这些经验是在实践中锤炼过的,从而形成了相对稳定的习惯用法。
学习C++语言,像练习打球一样,首先基本功要扎实,然后才能在此基础上升华一步。我们翻译本书的目的,就是试图把他们多年来在语言实践中获得的C++语言风格和习惯用法介绍给读者,以便提高读者利用C++语言高效地解决实际软件问题的能力。
我们在翻译过程中进行了认真审核校对,订正了若干不严谨的地方,对一些常用的关键字词作了较确切的解释。对每章的练习题中不合适或不确切的地方作了删节,也增加了一些有用的练习题。其目的是为了更好地加强读者对这本书的概念和习惯用法的理解。
参加本书翻译工作的还有宛霞、甄炜、李保林、米慧敏、崔柯、石良秀、乔立琴、钟义、韩文智和蔡凤奇。王静、彭芬芬和张风兰对本书中的程序做了不少测试、整理和校对工作。
希望本书对C++语言的应用与开发能起到一定的推动作用。
宛延阊
2003年12月于北京
C++是一种混合性语言,它既具有独特的面向对象特征,又保留了传统的高效结构C语言的主要特征。C++既能提供给程序开发者以面向对象思维开发的能力,又不会失去内存运行效率,并能在普通的计算机硬件上产生高质量的软件产品。但,C++更富于表现力蕴涵在C++软件结构的语言风格和习惯用法上。程序设计语言的风格来自于语言专家的经验,这些经验是在实践中锤炼过的,从而形成了相对稳定的习惯用法。
学习C++语言,像练习打球一样,首先基本功要扎实,然后才能在此基础上升华一步。我们翻译本书的目的,就是试图把他们多年来在语言实践中获得的C++语言风格和习惯用法介绍给读者,以便提高读者利用C++语言高效地解决实际软件问题的能力。
我们在翻译过程中进行了认真审核校对,订正了若干不严谨的地方,对一些常用的关键字词作了较确切的解释。对每章的练习题中不合适或不确切的地方作了删节,也增加了一些有用的练习题。其目的是为了更好地加强读者对这本书的概念和习惯用法的理解。
参加本书翻译工作的还有宛霞、甄炜、李保林、米慧敏、崔柯、石良秀、乔立琴、钟义、韩文智和蔡凤奇。王静、彭芬芬和张风兰对本书中的程序做了不少测试、整理和校对工作。
希望本书对C++语言的应用与开发能起到一定的推动作用。
宛延阊
2003年12月于北京
序言回到顶部↑
本书是为有一定C++开发经验的人员设计和编写的。为了更加精通C++程序设计,我们不仅要深刻地了解如何学习一种新的程序设计语言,而且更重要的是如何利用这种语言高效地解决实际的软件问题。
学习程序设计语言
通常,在语言手册中,并非读者所要了解的东西都能完全描述出来。其实做任何事情都不可能面面俱到,学习程序设计语言也是这样。学习语言的语法可以使我们朝着更深层次的思维方向理解,但这仅仅是深化理解的开始,更重要的是大多数我们系统所要建立的程序结构的准则,应当表述设计概念的风格和习惯用法。
风格应当把优点和技能区分开来。一种高效的主体风格或者是高效的程序设计风格来自于个人的经验和在其他经验基础之上建立起来的风格。软件工程师应当知道如何选择与应用相匹配的程序设计语言,以编写出优秀的、结构良好的程序。为了达到这个层次的水平,我们需要超越一些规则,抛弃死记硬背的学习方式,最后达到概念和结构上的抽象,这就是本书所说的“高级”的含义所在。
程序设计的准则、约定和概念推动了所建立的系统结构,使我们更加清晰地了解到系统的模型是如何建立的。问题分解和系统组合的模型是一种范型,是把现实世界分为可管理部分的模式。C++语言是多重范型语言,C程序员使用C++就好像使用最好的C一样,面向对象主张事物的多态性。事实上,不同的方法通常必须表达对软件问题高效、优美的问题解。
学习程序设计语言就像学习一种自然语言一样,基本的语法知识可以让程序员在编写过程时更加简单,程序编写得也更加简洁,好像一个人仅从几千个词语的字典中就可以撰写出美丽动人的童话故事一样。
但学习语法和基本语义是需要花费相当多的时间的,不可能一下子就挖出个金娃娃。语言的奥妙属于另一类复杂的问题。学习程序设计语言与学习自然语言的差别就在于要学习语言的习惯用法。例如,在C本身不存在把构造while(*cpi++=*cp2++);作为基本构造块来处理,而一个不熟悉这种构造的程序员却不曾发觉。
在程序设计中,像自然语言一样,重要的习惯用法,或者说好的习惯用法可以大大减轻程序员的工作量,就好像在任何一种语言中习惯用法丰富了相互之间的交流一样。程序设计的习惯用法是可重用程序设计的“表述”。在同样的意义下,类是设计和代码的可重用单位。简单的习惯用法(像上面while循环)是约定的表示,但很少是程序设计的核心。本书集中在习惯用法上,它影响到如何在整体结构中使用C++语言并实现一种设计。这种习惯用法大大改善了对问题的洞察力,导致更加简单的习惯用法的出现。通常,习惯用法引入了某种复杂性,但只要编写一次就可以随处运行了。一旦构造成功,程序设计语言习惯用法便蕴含在约定和技巧之中。
本书的方法
假定读者有C++基本语法的背景,本书试图把精通C++的专家们所获得的语言的风格和习惯用法传授给读者。本书展示了如何把C++语言的不同风格用于简单的数据抽象、“羽毛丰满”的抽象数据类型的实现以及面向对象程序设计。与此同时,本书也探索新的、C++语言间接支持的核心习惯用法,诸如基本功能和框架的程序设计以及高级垃圾收集技术。
本书的结构
本书用围绕语言的特征来学习C++高级特征。从支持C++特征的观点出发,来考虑C++特征中不断增长的强有力的抽象。本书每个章节都围绕习惯用法的家庭来组织,习惯用法渐进地建立在相互之间有关联的后继各章中。
第1章提供了C++习惯用法的历史背景。该章提供了一些产生习惯用法的原动力以及能够作为C++语言一部分或作为语言外部使用的不同的习惯用法。
第2章介绍了基本的C++语言构造块:类和成员函数。虽然很多素材是基本的,但本章建立的习惯用法和公用程序在后面章节中会再次出现。从设计观点出发,本章还介绍了编译类型系统和用户定义类型与类之间的关系,同时也介绍了const的更有用的习惯用法。
第3章介绍了使用类的“完全”类型的习惯用法。C++已经自动演变成许多拷贝工作和初始化对象工作,但对大多数类来说,程序员仍然需要定制赋值和默认的构造函数。本章提供了定制的框架,描述了调用的规范格式即定义了在对象工作机制下的原则和标准。除了大多数共同使用的规范格式以外,还将习惯用法引入到对新的和已有的类的引用计数之中。本书最初的习惯用法超出了直截了当地应用基本的C++语法的范畴,在引用计数、计数指针上的变化方面导致了从C++中把计算机的灵巧的指针、类似于对象的指针舍去。最后,本章还寻找如何把对象的建立从初始化中分离出来,这对熟悉基本C++的程序员来说,似乎是个不太自然的习惯用法:C++与紧密地耦合出现的两种操作相关联,在方法设计的驱动中以及在相互依赖资源的系统中需要分离它们的出现。
第4章介绍继承。
第5章添加了介绍面向对象程序设计继承的多态性。许多新的C++程序员正在变成“继承热”,在各种场合中都使用它。继承的确是大多数面向对象范型所支持的重要特性,它对软件可重性应用特别有用。第5章还介绍了继承与多态性的区别,以帮助读者识别这两种概念从而避免出现混淆。
第6章从结构和设计的剖面介绍C++的构造方法、风格和习惯用法。考察类在应用层面上的含义以及在高层语法上的含义。正确评价应用和抽象设计之间的关系,正确评价实现的类和对象之间的关系,以促进系统的健壮性并易于演化。另一个关键的进展是超越了具体应用的拓宽设计,覆盖了整个领域的应用。对这个领域分析的指导原则是本章的重要部分。本章还包含了适合继承使用的经验作法以及对不熟悉C++语言的程序员的难点领域等许多经验作法。经历过面向对象设计考验的读者将懂得如何把设计的输出转化为C++代码,作为继承替代物的封装性是C++语言上下文中的研究对象,可重用和多态性也是其研究对象。
第7章研究代码和设计的可重用性,介绍4种不同的代码机制,特别值得关注的是“继承热”的优缺点。本章介绍了使用模板的参数化类库的一些习惯用法,以便减少代码生成量。
本书剩下的部分超出了C++本身的范畴,进入到高级程序设计的习惯用法。
学习程序设计语言
通常,在语言手册中,并非读者所要了解的东西都能完全描述出来。其实做任何事情都不可能面面俱到,学习程序设计语言也是这样。学习语言的语法可以使我们朝着更深层次的思维方向理解,但这仅仅是深化理解的开始,更重要的是大多数我们系统所要建立的程序结构的准则,应当表述设计概念的风格和习惯用法。
风格应当把优点和技能区分开来。一种高效的主体风格或者是高效的程序设计风格来自于个人的经验和在其他经验基础之上建立起来的风格。软件工程师应当知道如何选择与应用相匹配的程序设计语言,以编写出优秀的、结构良好的程序。为了达到这个层次的水平,我们需要超越一些规则,抛弃死记硬背的学习方式,最后达到概念和结构上的抽象,这就是本书所说的“高级”的含义所在。
程序设计的准则、约定和概念推动了所建立的系统结构,使我们更加清晰地了解到系统的模型是如何建立的。问题分解和系统组合的模型是一种范型,是把现实世界分为可管理部分的模式。C++语言是多重范型语言,C程序员使用C++就好像使用最好的C一样,面向对象主张事物的多态性。事实上,不同的方法通常必须表达对软件问题高效、优美的问题解。
学习程序设计语言就像学习一种自然语言一样,基本的语法知识可以让程序员在编写过程时更加简单,程序编写得也更加简洁,好像一个人仅从几千个词语的字典中就可以撰写出美丽动人的童话故事一样。
但学习语法和基本语义是需要花费相当多的时间的,不可能一下子就挖出个金娃娃。语言的奥妙属于另一类复杂的问题。学习程序设计语言与学习自然语言的差别就在于要学习语言的习惯用法。例如,在C本身不存在把构造while(*cpi++=*cp2++);作为基本构造块来处理,而一个不熟悉这种构造的程序员却不曾发觉。
在程序设计中,像自然语言一样,重要的习惯用法,或者说好的习惯用法可以大大减轻程序员的工作量,就好像在任何一种语言中习惯用法丰富了相互之间的交流一样。程序设计的习惯用法是可重用程序设计的“表述”。在同样的意义下,类是设计和代码的可重用单位。简单的习惯用法(像上面while循环)是约定的表示,但很少是程序设计的核心。本书集中在习惯用法上,它影响到如何在整体结构中使用C++语言并实现一种设计。这种习惯用法大大改善了对问题的洞察力,导致更加简单的习惯用法的出现。通常,习惯用法引入了某种复杂性,但只要编写一次就可以随处运行了。一旦构造成功,程序设计语言习惯用法便蕴含在约定和技巧之中。
本书的方法
假定读者有C++基本语法的背景,本书试图把精通C++的专家们所获得的语言的风格和习惯用法传授给读者。本书展示了如何把C++语言的不同风格用于简单的数据抽象、“羽毛丰满”的抽象数据类型的实现以及面向对象程序设计。与此同时,本书也探索新的、C++语言间接支持的核心习惯用法,诸如基本功能和框架的程序设计以及高级垃圾收集技术。
本书的结构
本书用围绕语言的特征来学习C++高级特征。从支持C++特征的观点出发,来考虑C++特征中不断增长的强有力的抽象。本书每个章节都围绕习惯用法的家庭来组织,习惯用法渐进地建立在相互之间有关联的后继各章中。
第1章提供了C++习惯用法的历史背景。该章提供了一些产生习惯用法的原动力以及能够作为C++语言一部分或作为语言外部使用的不同的习惯用法。
第2章介绍了基本的C++语言构造块:类和成员函数。虽然很多素材是基本的,但本章建立的习惯用法和公用程序在后面章节中会再次出现。从设计观点出发,本章还介绍了编译类型系统和用户定义类型与类之间的关系,同时也介绍了const的更有用的习惯用法。
第3章介绍了使用类的“完全”类型的习惯用法。C++已经自动演变成许多拷贝工作和初始化对象工作,但对大多数类来说,程序员仍然需要定制赋值和默认的构造函数。本章提供了定制的框架,描述了调用的规范格式即定义了在对象工作机制下的原则和标准。除了大多数共同使用的规范格式以外,还将习惯用法引入到对新的和已有的类的引用计数之中。本书最初的习惯用法超出了直截了当地应用基本的C++语法的范畴,在引用计数、计数指针上的变化方面导致了从C++中把计算机的灵巧的指针、类似于对象的指针舍去。最后,本章还寻找如何把对象的建立从初始化中分离出来,这对熟悉基本C++的程序员来说,似乎是个不太自然的习惯用法:C++与紧密地耦合出现的两种操作相关联,在方法设计的驱动中以及在相互依赖资源的系统中需要分离它们的出现。
第4章介绍继承。
第5章添加了介绍面向对象程序设计继承的多态性。许多新的C++程序员正在变成“继承热”,在各种场合中都使用它。继承的确是大多数面向对象范型所支持的重要特性,它对软件可重性应用特别有用。第5章还介绍了继承与多态性的区别,以帮助读者识别这两种概念从而避免出现混淆。
第6章从结构和设计的剖面介绍C++的构造方法、风格和习惯用法。考察类在应用层面上的含义以及在高层语法上的含义。正确评价应用和抽象设计之间的关系,正确评价实现的类和对象之间的关系,以促进系统的健壮性并易于演化。另一个关键的进展是超越了具体应用的拓宽设计,覆盖了整个领域的应用。对这个领域分析的指导原则是本章的重要部分。本章还包含了适合继承使用的经验作法以及对不熟悉C++语言的程序员的难点领域等许多经验作法。经历过面向对象设计考验的读者将懂得如何把设计的输出转化为C++代码,作为继承替代物的封装性是C++语言上下文中的研究对象,可重用和多态性也是其研究对象。
第7章研究代码和设计的可重用性,介绍4种不同的代码机制,特别值得关注的是“继承热”的优缺点。本章介绍了使用模板的参数化类库的一些习惯用法,以便减少代码生成量。
本书剩下的部分超出了C++本身的范畴,进入到高级程序设计的习惯用法。








点击看大图





加载中...

