• 深度探索C++对象模型/传世经典书丛
21年品牌 40万+商家 超1.5亿件商品

深度探索C++对象模型/传世经典书丛

全新正版 极速发货

47.89 4.8折 99 全新

库存4件

广东广州
认证卖家担保交易快速发货售后保障

作者(美)李普曼|责编:李云静|译者:侯捷

出版社电子工业

ISBN9787121149528

出版时间2012-01

装帧其他

开本其他

定价99元

货号31007491

上书时间2024-07-03

书香美美

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
目录
目  录
本立道生(侯捷 译序)III
目录VII
前言(Stanley B. Lippman)XIII
第0章  导读(译者的话)XXV
第1章  关于对象(Object Lessons)1
加上封装后的布局成本(Layout Costs for Adding Encapsulation)5
1.1 C++对象模式(The C++ Object Model)6
简单对象模型(A Simple Object Model)7
表格驱动对象模型(A Table-driven Object Model)8
C++对象模型(The C++ Object Model)9
对象模型如何影响程序(How the Object Model Effects Programs)13
1.2  关键词所带来的差异(A Keyword Distinction)15
关键词的困扰16
策略性正确的struct(The Politically Correct Struct)19
1.3  对象的差异(An Object Distinction)22
指针的类型(The Type of a Pointer)28
加上多态之后(Adding Polymorphism)29
第2章  构造函数语意学(The Semantics of Constructors)37
2.1  Default Constructor的构造操作39
“带有Default Constructor”的Member Class Object41
“带有Default Constructor”的Base Class44
“带有一个Virtual Function”的Class44
“带有一个Virtual Base Class”的Class46
总结47
2.2  Copy Constructor的构造操作48
Default Memberwise Initialization49
Bitwise Copy Semantics(位逐次拷贝)51
不要Bitwise Copy Semantics!53
重新设定Virtual Table的指针54
处理Virtual Base Class Subobject57
2.3  程序转化语意学(Program Transformation Semantics)60
显式的初始化操作(Explicit Initialization)61
参数的初始化(Argument Initialization)62
返回值的初始化(Return Value Initialization)63
在使用者层面做优化(Optimization at the User Level)65
在编译器层面做优化(Optimization at the Compiler Level)66
Copy Constructor:要还是不要?72
摘要74
2.4  成员们的初始化队伍(Member Initialization List)74
第3章  Data语意学(The Semantics of Data)83
3.1  Data Member的绑定(The Binding of a Data Member)88
3.2  Data Member的布局(Data Member Layout)92
3.3  Data Member的存取94
Static Data Members95
Nonstatic Data Members97
3.4 “继承”与Data Member99
只要继承不要多态(Inheritance without Polymorphism)100
加上多态(Adding Polymorphism)107
多重继承(Multiple Inheritance)112
虚拟继承(Virtual Inheritance)116
3.5  对象成员的效率(Object Member Efficiency)124
3.6  指向Data Members的指针(Pointer to Data Members)129
“指向Members的指针”的效率问题134
第4章  Function语意学(The Semantics of Function)139
4.1  Member的各种调用方式140
Nonstatic Member Functions(非静态成员函数)141
Virtual Member Functions(虚拟成员函数)147
Static Member Functions(静态成员函数)148
4.2  Virtual Member Functions(虚拟成员函数)152
多重继承下的Virtual Functions159
虚拟继承下的Virtual Functions168
4.3  函数的效能170
4.4  指向Member Function的指针(Pointer-to-Member Functions)174
支持“指向Virtual Member Functions”的指针176
在多重继承之下,指向Member Functions的指针178
“指向Member Functions之指针”的效率180
4.5  Inline Functions182
形式参数(Formal Arguments)185
局部变量(Local Variables)186
第5章  构造、析构、拷贝语意学(Semantics of Construction, 
Destruction, and Copy)191
纯虚函数的存在(Presence of a Pure Virtual Function)193
虚拟规格的存在(Presence of a Virtual Specification)194
虚拟规格中const的存在195
重新考虑class的声明195
5.1 “无继承”情况下的对象构造196
抽象数据类型(Abstract Data Type)198
为继承做准备202
5.2  继承体系下的对象构造206
虚拟继承(Virtual Inheritance)210
vptr初始化语意学(The Semantics of the vptr Initialization)213
5.3  对象复制语意学(Object Copy Semantics)219
5.4  对象的效能(Object Efficiency)225
5.5  析构语意学(Semantics of Destruction)231
第6章  执行期语意学(Runtime Semantics)237
6.1  对象的构造和析构(Object Construction and Destruction)240
全局对象(Global Objects)242
局部静态对象(Local Static Objects)247
对象数组(Array of Objects)250
Default Constructors和数组252
6.2  new和delete运算符254
针对数组的new语意257
Placement Operator new的语意263
6.3  临时性对象(Temporary Objects)267
临时性对象的迷思(神话、传说)275
第7章  站在对象模型的尖端(On the Cusp of the Object Model)279
7.1  Template280
Template的“实例化”行为(Template Instantiation)281
Template的错误报告(Error Reporting within a Template)285
Template中的名称决议法(Name Resolution within a Template)289
Member Function的实例化行为(Member Function Instantiation)292
7.2  异常处理(Exception Handling)297
Exception Handling快速检阅298
对Exception Handling的支持303
7.3  执行期类型识别(Runtime Type Identification,RTTI)308
Type-Safe Downcast(保证安全的向下转换操作)310
Type-Safe Dynamic Cast(保证安全的动态转换)311
References并不是Pointers313
Typeid运算符314
7.4  效率有了,弹性呢?318
动态共享函数库(Dynamic Shared Libraries)318
共享内存(Shared Memory)318

内容摘要
作者Lippman参与设计了全世界第一套C++编译程序cfront,这本书就是一位伟大的C++编译程序设计者向你阐述他如何处理各种explicit(明确出现于C++程序代码中)和implicit(隐藏于程序代码背后)的C++语意。
本书专注于C++面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。这本书让你知道:一旦你能够了解底层实现模型,你的程序代码将获得多么大的效率。Lippman澄清了那些关于C++额外负荷与复杂度的各种错误信息和迷思,但也指出其中某些成本和利益交换确实存在。他阐述了各式各样的实现模型,指出它们的进化之道及其本质因素。书中涵盖了C++对象模型的语意暗示,并指出这个模型是如何影响你的程序的。


精彩内容
MemberFunction的实例化行为(MemberFunctionInstantiation)对于template的支持,最困难的莫过于templatefunction的实例化(instantiation)。目前的编译器提供了两个策略:一个是编译时期策略,程序代码必须在programtextfile中备妥可用;另一个是链接时期策略,有一些meta.compilation工具可以导引编译器的实例化行为(instantiation)。
  下面是编译器设计者必须回答的三个主要问题:  1.编译器如何找出函数的定义?
  答案之一是包含templateprogramtextfile,就好像它是一个header文件一样。
  Borland编译器就遵循这个策略。另一种方法是要求一个文件命名规则,例如,我们可以要求,在Point.h文件中发现的函数声明,其templateprogramtext一定要放置于文件Point.C或Point.cpp中,依此类推。cfront就遵循这个策略。EdisonDesignGroup编译器对这两种策略都支持。
  2.编译器如何能够只实例化程序中用到的memberfunctions?
  解决办法之一就是,根本忽略这项要求,把一个已经实例化的class的所有memberfunctions都产生出来。Borland就是这么做的——虽然它也提供#pragmas让你压制(或实例化)特定实例。另一种策略就是模拟链接操作,检测看看哪一个函数真正需要,然后只为它(们)产生实例。cfront就是这么做的。EdisonDesignGroup编译器对这两种策略都支持。
  3.编译器如何阻止memberdefinitions在多个.o文件中都被实例化呢?
  解决办法之一就是产生多个实例,然后从链接器中提供支持,只留下其中一个实例,其余都忽略。另一个办法就是由使用者来导引“模拟链接阶段”的实例化策略,决定哪些实例(instances)才是所需求的。
  目前,不论是编译时期还是链接时期的实例化(instantiation)策略,均存在以下弱点:当template实例被产生出来时,有时候会大量增加编译时间。很显然,这将是templatefunctions第一次实例化时的必要条件。然而当那些函数被非必要地再次实例化,或是当“决定那些函数是否需要再实例化”所花的代价太大时,编译器的表现令人失望!
  C++支持template的原始意图可以想见是一个由使用者导引的自动实例化机制(use—directedautomaticinstantiationmechanism),既不需要使用者的介入,也不需要相同文件有多次的实例化行为。但是这已被证明是非常难以达成的任务,比任何人此刻所能想象的还要难(请参考[S7ROUP94])。ptlink,随着cfront3.0版所附的原始实例化工具,提供了一个由使用者驱动的自动实例化机制(use—drivenautomaticinstantiationmechanism),但它实在太复杂了,即使是久经世故的人也没法一下子了解。
  ……

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP