分享
 
 
 

深度探索C++对象模型

深度探索C++对象模型  点此进入淘宝搜索页搜索
  特别声明:本站仅为商品信息简介,并不出售商品,您可点击文中链接进入淘宝网搜索页搜索该商品,有任何问题请与具体淘宝商家联系。
  參考價格: 点此进入淘宝搜索页搜索
  分類: 图书,计算机与互联网,程序语言与软件开发,语言与开发工具,C语言及其相关,

基本信息·出版社:华中科技大学出版社

·页码:320 页

·出版日期:2007年

·ISBN:7560924182/9787560924182

·条形码:9787560924182

·包装版本:第1版

·装帧:平装

·开本:16开

产品信息有问题吗?请帮我们更新产品信息。

内容简介《深度探索C++对象模型》重点:探索"对象导向程序所支持的C++对象模型"下的程序行为。对于"对象导向性质之基础实现技术"以及"各种性质背后的隐含利益交换"提供一个清楚的认识。检验由程序变形所带来的效率冲击。提供丰富的程序范例、图片,以及对象导向观念和底层对象模型之间的效率测量。Inside The C++ Object Model专注于C++对象导向程序设计的底层机制,包括结构式语意、暂时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。这《深度探索C++对象模型》让你知道:一旦你能够了解底层实现模型,你的程序代码将获得多么大的效率。Lippman澄清了那些关于C++额外负荷与复杂度的各种错误信息和迷思,但也指出其中某些成本和利益交换确实存在。他阐述了各式各样的实现模型,指出它们的进化之道及其本质因素。

作者简介Stanley Lippman目前是华特迪斯尼主题动画公司(Walt Disney Feature Animation)的主要软件工程师。他曾经在AT&T贝尔实验室领导cfront 3.0和2.1版的编译器开发小组。他也是贝尔实验室中由Bjame Stroustrup所领导的Foundation专案组中的一员,负责对象模型并研究C++程序开发环境。Stan著有极为成功的C++ Primer一书,也发表过许多C++方面的论文。Stan最近刚从C++ Report的编辑位置上“退隐”,他曾在那个位置上做了4年。他的C++论述遍及全球。

侯捷,海峡两岸著名的电脑技术自由作家,对于技术的钻研和发表,有独特的品性与坚持。作品涵盖著、译、评三方面,散见于各种刊特、媒体、网站论坛,深受读者喜爱和尊敬。

媒体推荐前言

差不多有10年之久,我在贝尔实验室(Bell Laboratories)埋首于C++的实现任务。最初的工作是在cfront上面(Bjarne Stroustrup的第一个C++编译器),从1986年的1.1版到1991年9月的3.0版,然后移转到Simplifier(这是我们内部的命名),也就是Found~ion项目中的C++对象模型部分。在Simplifier设计期间,我开始酝酿这本书。

Foundation项目是什么?在Bjarne的领导下,贝尔实验室中的一个小组探索着以C++完成大规模程序设计时的种种问题的解决之道。Foundation项目是我们为了构造大系统而努力定义的一个新的开发模型;我们只使用C++,并不提供多重语言的解决方案。这是个令人兴奋的工作,一方面是因为工作本身,一方面是因为工作伙伴:Bjarne、Andy Koenig、Rob Murray、Martin Carroll、Judy Ward、Steve Buroff、Peter Juhl,以及我自己。Barbara Moo管理我们这一群人(Bjarne和Andy除外)。Barbara Moo常说管理一个软件团队,就像放牧一群骄傲的猫。

我们把Foundation想象成一个核心,在那上面,其它人可以为使用者铺设一层真正的开发环境,把它整修为他们所期望的UNIX或Smalltalk模型。私底下我们把它称为Grail(传说中耶稣最后的晚餐所用的圣杯),人人都想要,但是从来没人找到过!

Grail使用一个由Rob Murray发展出来并命名为ALF的面向对象层次结构,提供一个永久的、以语意为基础的表现法。在Grail中,传统编译器被分解为数个各自分离的可执行文件。parser负责建立程序的ALF表现法。其它每一个组件(比如type checking、simplification,code generation)以及工具(比如browser)都在程序的一个ALF表现体上操作(并可能加以扩展)。Simplifier是编译器的一部分,处于typechecking和codegeneration之间。Simplifier这个名称是由Bjarne所倡议的,它原本是cfront的一个阶段(phase)。

在type checking和code generation之间,Simplifier做什么事呢?它用来转换内部的程序表现。有三种转换风味是任何对象模型都需要的:

1.与编译器息息相关的转换(Implementation,dependent transformations)

这是与特定编译器有关的转换。在ALF之下,这意味着我们所谓的“tentative”nodes。例如,当parser看到这个表达式:

fct();

它并不知道是否(a)这是一个函数调用操作,或者(b)这是overloaded call operator在class object fct上的一种应用。默认情况下,这个式子所代表的是一个函数调用,但是当(b)的情况出现时,Simplifier就要重写并调换call subtree。

2.语言语意转换(Language semantics transformations)

这包括constructor/destructor的合成和扩展、memberwise初始化、对于memberwise copy的支持、在程序胫邪膊錭onversion operators、临时性对象,以及对constructor/destructor的调用。

3.程序代码和对象模型的转换(Code and object model transformations)

这包括对virtual functions、virtual base class和inheritance的一般支持、new和delete运算符、class objects所组成的数组、local static class instances、带有非常量表达式(nonconstant expression)之global object的静态初始化操作。我对Simplifier所规划的一个目标是:提供一个对象模型体系,在其中,对象的实现是一个虚拟接口,支持各种对象模型。

最后两种类型的转换构成了本书的基础。这意味着本书是为编译器设计者而写的吗?不是,绝对不是!这本书是由一位编译器设计者针对中高级C++程序员所写的。隐藏在这本书背后的假设是,程序员如果了解C++对象模型,就可以写出比较没有错误倾向而且比较有效率的代码。

编辑推荐《深度探索C++对象模型》涵盖了C++对象模型的语意暗示,并指出这个模型是如何影响你的程序的。C++成山似海的书籍堆中,这一本不是婴幼儿奶粉,也不是较大婴儿奶粉,它是成人专用的低脂高钙特殊奶粉。

对于C++底层机制感兴趣的读者,这《深度探索C++对象模型》会给你"漫卷诗书喜欲狂"的感觉。

了解C++ Object Model,是学习Component Object Model的最短路线。

如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside The C++ Object Model正适合你。

目录

本立道生(侯捷 译序)

目录

前言(Stanley B.Lippman)

第0章 导读(译者的话)

第1章 关于对象(Object Lessons)

加上封装后的布局成本(Layout Costs for Adding Encapsulation)

1.1 C++模式模式(The C++ Object Model)

简单对象模型(A Simple Object Model)

表格驱动对象模型(A Table-driven Object Model)

C++对象模型(The C++ Object Model)

对象模型如何影响程序(How the Object Model Effects Programs)

1.2 关键词所带来的差异(A Keyword Distinction)

关键词的困扰

策略性正确的struct(The Politically Correct Struct)

1.3 对象的差异(An Object Distinction)

指针的类型(The Type of a Pointer)

加上多态之后(Adding Polymorphism)

第2章 构造函数语意学(The Semantics of constructors)

2.1 Default Constructor的建构操作

“带有Default Constructor”的Member Class Object

“带有Default Constructor”的Base Class

“带有一个Virual Function”的Class

“带有一个virual Base class”的Class

总结

2.2 Copy Constructor的建构操作

Default Memberwise Initialization

Bitwise Copy Semantics(位逐次拷贝)

不要Bitwise Copy Semantics!

重新设定的指针Virtual Table

处理Virtual Base Class Subobject

2.3程序转换语意学(Program Transformation Semantics)

明确的初始化操作(Explicit Initialization)

参数的初始化(Argument Initialization)

返回值的初始化(Return Value Initialization)

在使用者层面做优化(Optimization at the user Level)

在编译器层面做优化(Optimization at the Compiler Level)

Copy Constructor:要还是不要?

摘要

2.4 成员们的初始化队伍(Member Initialization List)

第3章 Data语意学(The Semantics of Data)

3.1 Data Member的绑定(The Binding of a Data Member)

3.2 Data Member的布局(Data Member Layout)

3.3 Data Member的存取

Static Data Members

Nonstatic Data Member

3.4 “继承”与Data Member

只要继承不要多态(Inheritance without Polymorphism)

加上多态(Adding Polymorphism)

多重继承(Multiple Inheritance)

虚拟继承(Virtual Inheritance)

3.5 对象成员的效率(Object Member Efficiency)

3.6 指向Data Members的指针(Pointer to Data Members)

“指向Members的指针”的效率问题

第4章 Function语意学(The Semantics of Function)

4.1 Member的各种调用方式

Nonstatic Member Functions(非静态成员函数)

Virtual Member Functions(虚拟成员函数)

Static Member Functions(静态成员函数)

4.2 Virtual Member Functions(虚拟成员函数)

多重继承下的Virtual Functions

虚拟继承下的Virtual Functions

4.3 函数的效能

4.4 指向Member Functions的指针(Pointer-to-Member Functions)

支持“指向Virtual Member Functions”之指针

在多重继承之下,指向Member Functions的指针

“指向Member Functions之指针”的效率

4.5 Inline Functions

形式对数(Formal Arguments)

局部变量(Local Variables)

第5章 构造、解构、拷贝 语意学(Semantics of Construction,Destruction,and Copy)

纯虚拟函数的存在(Presence of a Pure Virtual Function)

虚拟规格的存在(Presence of a Virtual Specification)

虚拟规格中const的存在

重新考虑class的声明

5.1 无继承情况下的对象构造

抽象数据类型(Abstract Data Type)

为继承做准备

5.2 继承体系下的对象构造

虚拟继承(Virtual Inheritance)

初始化语意学(The Semantics of the vptr Initialization)

5.3 对象复制语意学(Object Copy Semantics)

5.4 对象的功能(Object Efficiency)

5.5 解构语意学(Semantics of Destruction)

第6章 执行期语意学(Runting Semantics)

6.1 对象的构造和解构(Object Construction and Destruction)

全局对象(Global Objects)

局部静态对象(Local Static Objects)

对象数组(Array of Objects)

Default Constructors和数组

6.2 new和delete运算符

针对数组的new语意

Placement Operator new的语意

6.3 临时性对象(Temporary Objects)

临时性对象的迷思(神话、传说)

第7章 站在对象模型的类端(On the Cusp of the Object Model)

7.1 Template

Template的“具现”行为(Template Instantiation)

Template的错误报告(Error Reporting within a Template)

Template中的名称决议方式(Name Resolution within a Template)

Member Function的具现行为(Member Function Instantiation)

7.2 异常处理(Exception Handling)

Exception Handling快速检阅

对Exception Handling的支持

7.3 执行期类型识别(Runtime Type Identification,RTTI)

Type-Safe Downcast(保证安全的向下转型操作)

Type-Safe Dynamic Cast(保证安全的动态转型)

References并不是Pointers

Typeid运算符

7.4 效率有了,弹性呢?

动态共享函数库(Dynamic Shared Libraries)

共享内存(Shared Memory)

……[看更多目录]

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
>>返回首頁<<
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有