深度探索C++对象模型

出版日期:2012-1
作者:斯坦利•B.李普曼 (Stanley B. Lippman)
页数:320页

内容概要

Stanley B.Lippman

微软公司Visual C++ 团队的架构师。他从1984年开始在贝尔实验室与C++的设计者Bjarne Stroustrup一起从事C++的设计与开发。他还著有Inside the C++ Object Model。

书籍目录

本立道生(侯捷 译序)
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 Object
41
“带有Default Constructor”的Base Class
44
“带有一个Virtual Function”的Class
44
“带有一个Virtual Base Class”的Class
46
总结
47
2.2 Copy Constructor的构造操作
48
Default Memberwise Initialization
49
Bitwise Copy Semantics(位逐次拷贝)
51
不要Bitwise Copy Semantics!
53
重新设定Virtual Table的指针
54
处理Virtual Base Class Subobject
57
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 Members
95
Nonstatic Data Members
97
3.4 “继承”与Data Member
99
只要继承不要多态(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 Functions
159
虚拟继承下的Virtual Functions
168
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 Functions
182
形式参数(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 Template
280
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并不是Pointers
313
Typeid运算符
314
7.4 效率有了,弹性呢?
318
动态共享函数库(Dynamic Shared Libraries)
318
共享内存(Shared Memory)
318

作者简介

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


 深度探索C++对象模型下载



发布书评

 
 


精彩短评 (总计101条)

  •     这本书刚开始看,有关C++如何运行的,讲的很深刻,关于底层如何运行的,对于了解面向对象有很大帮助,强烈推荐
  •     非常不错的书,能加深对c++的理解。
  •     深入一门语言进行编程,而不是在用一门语言进行编程 大多数重要的编程原则并不依赖特定的语言,而依赖于你使用语言的方式
  •     半夜看的特别精神特别高兴。。
  •     如果你要深入理解C++,这本书是必看的
  •     对于想深入了解C++对象模型来说,是一本好书,值得仔细的琢磨
  •     还没读不过当当送货和书真的是没的说
  •     这本书的内容其实没多大意义,不过面试必备,给面试官提供了材料。里面的大多数知识都是基础,应该在其他地方学过或者自己能够想到。不过那些说c++没有c快的xx,可以把这本书仍他们脸上。c++的抽象是无痛的,除去没人用的多继承。
  •     这是一本很老的书了,但是读读也是不错的。Lippman从编译器的角度来看C++的面向对象,而且大多数实现模型也是现在仍然沿用的。读过以后最大的感受:在我们被C++虐的体无完肤时,C++编译器也被我们的代码虐的七荤八素了;virtual是万恶之源;还有,C++真的做到了,你不必为自己没用到的特性付出代价。
  •     内容很好,三星原因:1,内容组织上,感觉3、4章应该放在2章前面,否则第二章看起来就是云里雾里。2,侯捷其他书翻译得很好,但这本实在是太烂了!!!3,原作者的错误+译者的错误太多了
  •     前几章的内容对自己理解c++还是挺有帮助的~后面有些内容感觉有点太深了,设计到编译器实现的部分也没有很仔细地去看
  •     好多看不懂,重新看看基础的东西回头再来看。
  •     牛逼的一本书,反正有的已经颠覆了我的常识,但也有的不一定说的对
  •     这本书很实用!专注C++底层机制 优化代码
  •     对于了解C++对象模型的底层实现,理清C++在实现OO的机制,很有帮助。
  •     把c++的各种特性在底层是怎样实现的解释得明明白白。c++程序员必读,不止有一个面试官推荐了。。。
  •     书是正版的,不错,内容就不多说了,百度上有的是,大师的作品。经典。
  •     看到第三章,书好,但不适合现在看。
  •     了解C++底层,可以设计出性能好点的程序
  •     指针怎么放怎么指,是个大问题
  •     十分好的C++进阶书籍,值得阅读。挺不错的!
  •     lippman的这本书是所有C++程序员都应该仔细研读的书。本书循序渐进的讲解C++的技术细节,能够扫清初学时就有的对于对象模型的所有疑惑。
  •     我觉得这本书讲得其实就是编译器为你做的事情。中间有两章看得迷迷糊糊,其他的章节读起来都还比较舒服。是一本值得反复阅读的书。
  •     了解C++对象模型是写好C++程序的基础,不过此书感觉讨论不够彻底,比如C++对象的内存布局,应该更加详细具体,或者给出比较好的参考;不过整体读来,收获颇多,了解了C++编译器在背后做的一些事情,以及编译器的约定,心里才踏实:-)
  •     做c++必读
  •     书可以,质量很好,送货也较快;总之是一本好书
  •     (1)2015-12-03:有点粗略; (2)2016-5-22:错误挺多,不知道是我理解错了还是真的写错了。
  •     还好~~~~~
  •     C++的底层细节。书是好书,很有价值。能理解其中的细节做法,在编写C++的程序过程中,也会有所启发。而且对程序的效率也会有新的认识。
  •     还是在当当上买书给力
  •     书分析C++底层机制很透彻,值得一读
  •     近两年读过最爽的一本书,MD,讲述语言的书就应该这样写嘛. 打算再买两本,分别做我儿子和女儿的满月礼物.
  •     有点高深难懂啊
  •     (2013)
  •     编程圣典
  •     探索过程有点冗长。没有全部看完,觉得有点索然无味了,不过要真追究细节,还是要看这个。回头再看把
  •     经典图书+经典的翻译,慢慢看,要想成为一个高手,必须认真学的书之一
  •     书还是不错的么 为了学知识 好书
  •     是本好书,但不适合初学者看。
  •     看完,对C++中的对象模型默默为我们做的事情更加清楚了,特别是涉及到virtual function、virtual base class~
  •     还没有看,准备学
  •     讲的透彻,也很通俗,正在研读中。
  •     很好的一本书,只是不太适合初学者的,我做了1年半的C++开发,才勉强看懂。书中对于C++的底层实现和原理讲的很详细。
  •     书非常给力,但是偏深,不适合初学者
  •     智商不够用
  •     书的质量很好,翻了下算法精解,讲得挺细的,还有图文描述,另一本是别人推荐的,感觉内容比较不容易领悟
  •     商品好是好,但对我这个初学者来说不怎
  •     c++必备. 大家都知道.
  •     看完才大致理解了题目“对象模型”究竟是什么意思。才懂得标题的“语义”是说什么。讲的大概是如何实现C++语言(即语义)。非常好的书。不光理性愉悦,还能理解很多底层问题。又花了点时间才懂得什么叫semantic
  •     看完这本书才知道C++的本质是面向内存编程。翻译得挺认真的
  •     手术恢复期间没什么事读完了,除了有一些小错误之外,写的很好,值得一读,至少我是明白了虚函数,虚继承都是什么,怎么实现的
  •     带你了解C++背后的真相。
  •     对c++的理解很有帮助,从编译器的角度剖析c++的机制
  •     刚到手还没看,书给人的感觉很好
    经典书籍,定好好吸收
  •     对象模型的解释很精辟,虽然读的不是很懂
  •     略啰嗦
  •     很少有书剖析编译器干的活。这本书讲解不错。就是有两点并没有给这本书五星。一是,书中不少小错误。二是,翻译得有点古板。原作者文笔比较随意,幽默。这一点是文化的差异……
  •     看了该书,对C++对象模型才大彻大悟,很多大家以为应该是这样的想法,在书中一一被否决!从编译器层面去了解C++对象模型的实现,译文还算OK,部分细节讲述的不清楚,直接读英文意思要更明确一些!
  •     后面几章完全囫囵吞枣看完的,需要重复翻。
  •     还没开始看, 抱怨下快递, 书籍没保护好, 有破损, 希望当当在书籍保护方面可以加强。一个塑料袋明显不行。。。
  •     lippman的书是没的说的 讲解的很是到位 不过适合有基础的读者而不是C++新手
  •     想了解底层的必读,你会知道编译器做了什么事
  •     探究根本的第一步
  •     还没开始看,但是这确实是一本很棒的书,不然我也不会买。
  •     C++编程提高必读之书~
  •     侯捷老师的书,鞭辟入里,非常好,送货迅速,值得拥有。
  •     质量很好啊啊啊质量很好啊啊啊质量很好啊啊啊
  •     准备好好阅读以下,不过很多人都推荐这本书,侯的书应该是很不错的
  •     涨知识
  •     还没看,听说不错买来看看
  •     C++与Java不同,它是一个趋于"完全结构化"与"一切对象"之间的语言,不象Java是一门"一切对象"的语言。在使用C++中不可避免的要使用并了解对象其中的底层知识。而这本书完全满足了对C++底层知识的了解。
  •     经典不需要解释
  •     隔了个寒假,回来终于把最后两章看完了。。。后面看的有点迷糊,前面几章还是捋清了不少。
  •     这本书非常的好 不过 特别深 基础特好的话可以看看
  •     大师的作品,要好好看
  •     如果你好奇C++在你的代码背后做了什么动作,这本书可以解答你的疑惑。
  •     C++进阶的好书,毅然买了!
  •     后面几章味如嚼蜡,而且没有结合当前的编译器来讲,不过还是经典书,推荐下
  •     无论翻译的的如何,关键点是讲到了,不足的地方需要自己根据经验发现,很不错的书,赞一个
  •     详细描述了C++实现的各个细节,编译器默默的做了哪些事情以及为什么 对实践很有帮助
  •     如果你已经有基础了,并且有了一定的实践。一定要看看这本书,会让你发现另一片天地。
  •     提高C++功力的好资料!知其所以然的好书!
  •     侯捷的书都是很好
  •     一遍不够,来日二遍
  •     内容比较深,不适合像我这样的初学者,但虚函数的章节还是受益匪浅
  •     告诉你编译器都干了些什么
  •     C++高阶书籍~
  •     insightful, in depth, but not as illustrative as I expect.
  •     经典,没啥好说的,就是老了点,重版后价格贵了点
  •     虽然有很多的地方翻译的不是很好,但是翻译者很细心。第一次比较系统地了解 C++ 对象模型。
  •     嗯,是在图书频道的推荐里看到的,感觉还好吧。
  •     这本书适合通读,不适合细读。大概了解就好~
  •     对深入理解C++对象模型和内存结构很有帮助。
  •     前6章讲解得很好,第七章较为简略,需要结合其他书籍再看。第七章最后一节更加简略了,应该能够再讲深入一点。建议在有C++基础的情况下阅读本书,收货会更大,否则感觉会云里雾里。
  •     翻译看得有点别扭,但是,瑕不掩瑜,非常牛X的一本C++书。
  •     C++程序员必须拥有
  •     有挑战。。。。。
  •     对C++内部实现的一些机制讲得很详细很深入,但有些地方比较费解。
  •     Chap1、3、4
  •     和effective c++有相通又有不同的地方。不过感觉语言有点生涩,不知道是不是自己的原因
  •     这书真的不错,下次会再光顾的
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024