出版社: 电子工业出版社
出品方: 博文视点
原作名: Inside the C++ Object Model
译者: 侯捷
出版年: 2012-1-1
页数: 320
定价: 69.00元
装帧: 平装
丛书: 博文视点·传世经典书丛
ISBN: 9787121149528
内容简介 · · · · · ·
作者Lippman参与设计了全世界第一套C++编译程序cfront,这本书就是一位伟大的C++编译程序设计者向你阐述他如何处理各种explicit(明确出现于C++程序代码中)和implicit(隐藏于程序代码背后)的C++语意。
本书专注于C++面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。这本书让你知道:一旦你能够了解底层实现模型,你的程序代码将获得多么大的效率。Lippman澄清了那些关于C++额外负荷与复杂度的各种错误信息和迷思,但也指出其中某些成本和利益交换确实存在。他阐述了各式各样的实现模型,指出它们的进化之道及其本质因素。书中涵盖了C++对象模型的语意暗示,并指出这个模型是如何影响你的程序的。
对于C++底层机制感兴趣的读者,这必然是一本让你大呼过瘾的绝妙好书。
深度探索C++对象模型的创作者
· · · · · ·
-
侯捷 译者
作者简介 · · · · · ·
Stanley B.Lippman
微软公司Visual C++ 团队的架构师。他从1984年开始在贝尔实验室与C++的设计者Bjarne Stroustrup一起从事C++的设计与开发。他还著有Inside the C++ Object Model。
目录 · · · · · ·
前言(Stanley B. Lippman) XIII
第0章 导读(译者的话) XXV
第1章 关于对象(Object Lessons) 1
加上封装后的布局成本(Layout Costs for Adding Encapsulation) 5
1.1 C++对象模式(The C++ Object Model) 6
· · · · · · (更多)
前言(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
· · · · · · (收起)
"深度探索C++对象模型"试读 · · · · · ·
关于对象 (Object Lessons) 在C语言中,“数据”和“处理数据的操作(函数)”是分开来声明的,也就是说,语言本身并没有支持“数据和函数”之间的关联性。我们把这种程序方法称为程序性的(procedural),由一组“分布在各个以功能为导向的函数中”的算法所驱动,它们处理的是共同的外部数据。举个例子,如果我们声明一个struct Point3d,像这样: typedef struct...
丛书信息
· · · · · ·
喜欢读"深度探索C++对象模型"的人也喜欢的电子书 · · · · · ·
喜欢读"深度探索C++对象模型"的人也喜欢 · · · · · ·
- Effective C++ 9.5
- 程序员的自我修养 8.9
- Linux/UNIX系统编程手册 9.4
- C专家编程 9.2
- C++并发编程实战(第2版) 9.6
- C++沉思录 8.6
- C++面向对象高效编程(第2版) 9.0
深度探索C++对象模型的书评 · · · · · · ( 全部 62 条 )
所有面向对象的程序员都应该读的一本书
> 更多书评 62篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部5 )
-
华中科技大学出版社 (2001)9.0分 1817人读过
-
Addison-Wesley Professional (1996)9.0分 208人读过
-
中国电力出版社 (2003)9.5分 36人读过
-
碁峰 (1998)暂无评分 4人读过
在哪儿借这本书 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
- C++: From Novice to Professional (Kimmy)
- 计算机科学 (月亮)
- 程序员典藏大系 (恒量)
- 软工&程序开发 (电子工业出版社-博文视点)
- 评分9分以上的计算机图书 (子苓)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于深度探索C++对象模型的评论:
feed: rss 2.0
0 有用 がお 2013-05-08 10:12:43
略啰嗦
1 有用 杜魚 2014-04-01 18:50:15
对于了解C++对象模型的底层实现,理清C++在实现OO的机制,很有帮助。
2 有用 空气 2013-02-25 22:02:54
几年前就想读,终于趁着过年的几天读完了。看得比较粗,一些细节没深究。 侯捷译的很仔细也很谨慎,大量的名词干脆就照抄原文。
1 有用 哨牙 2015-07-14 21:39:28
半夜看的特别精神特别高兴。。
2 有用 段干相若 2022-09-30 22:47:54
这本书有些内容比较老了,但是参考意义很大。因为是从 cfront 也就是编译器的角度来理解 C++ 的对象模型,而不是从语言标准的角度。这一点感觉比较难能可贵,编译器在背后帮我们做的很多事情,很多时候才是性能或者 bug 的深层所在。但是本书又没有故意显露编译原理之类距离使用者比较远的知识与技巧,能举重若轻地把原理写出伪代码实在是太棒了。虽然原书里有不少笔误,但翻译都进行了比较详细的纠正,很不错。... 这本书有些内容比较老了,但是参考意义很大。因为是从 cfront 也就是编译器的角度来理解 C++ 的对象模型,而不是从语言标准的角度。这一点感觉比较难能可贵,编译器在背后帮我们做的很多事情,很多时候才是性能或者 bug 的深层所在。但是本书又没有故意显露编译原理之类距离使用者比较远的知识与技巧,能举重若轻地把原理写出伪代码实在是太棒了。虽然原书里有不少笔误,但翻译都进行了比较详细的纠正,很不错。希望能看到更多这样系统性的从编译器的角度分析的书籍。 (展开)
0 有用 youayou 2024-04-10 19:44:29 上海
微信读书。搞C++必备神书
0 有用 LSD2018 2024-02-03 18:14:21 重庆
C++有太多巧妙的设计了
1 有用 FujiZ 2023-12-05 20:18:49 上海
翻译得一坨💩, 建议侯捷先生将自己列为共同作者
0 有用 王悟空 2023-11-19 10:10:04 上海
留个图,之后按图索骥用
0 有用 abby 2023-10-18 23:11:39 四川
有用的不多