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

  • 购买积分:11 如何计算积分?
  • 作  者:(美)李普曼著
  • 出 版 社:北京:中国电力出版社
  • 出版年份:2003
  • ISBN:7508314050
  • 页数:280 页
图书介绍:本书重点论述了C++面向对象程序设计的底层机制,包括结构式语意,暂时性对象的生成、封装、继承和虚拟——虚拟函数和虚拟继承。书中向你表明:理解底层实现模型,可以极大地提高你的编码效率。Lippman澄清了那些关于C++系统开销与复杂性的各种错误信息和猜测,指出了其中某些成本和利益交换确实存在。他在书中详述了各种实现模型,指出了它们的发展方向以及促使其发展的根本原因。本书涵盖了C++对象模型的语意暗示,并指出了这个模型是如何对程序造成影响的。本书中文版已由华中科技大学出版社出版,至今印刷了20000余册。由于名词术语等诸多原因,很多已购和未购该书中文版的读者希望能够买到配套的原文图书。我社应广大读者的要求,引进了该书的英文版。该书的作者李普曼先后在Addison Wesley出版了两本极为成功的图书《C++ Primer》和《Essential C++》,在国内及国际计算机行业具有极高的知名度,他对技术的了解保证了该书的质量。相信本书的出版又将在国内掀起一个C++浪潮。

1 Object Lessons 1

Layout Costs for Adding Encapsulation 5

1.1 The C++Object Model 6

A simple object model 6

A table-driven object model 7

1.2 A Keyword Distinction 12

Keywords schmeewords 13

The politically correct struct 16

1.3 An Object Distinction 18

The type of a pointer 24

Adding polymorphism 25

2 The Semantics of Constructors 31

2.1 Default Constructor Construction 32

Member class object with default constructor 34

Base class with default constructor 37

Class with a virtual function 37

Class with a virtual base class 38

Summary 39

2.2 Copy Constructor Construction 40

Default memberwise initialization 41

Bitwise copy semantics 43

Bitwise copy semantics-Not! 45

Resetting the Virtual Table Pointer 45

Handling the Virtual Base Class Subobject 47

Explicit initialization 50

2.3 Program Transformation Semantics 50

Argument initialization 51

Return value initialization 53

Optimization at the user level 54

Optimization at the compiler level 55

The copy constructor:to have or to have not? 59

Summary 61

2.4 Member Initialization List 62

3 The Semantics of Data 69

3.1 The Binding of a Data Member 72

3.3 Access of a Data Member 72

3.2 Data Member Layout 75

Static data members 78

Nonstatic data members 80

3.4 Inheritance and the Data Member 82

Inheritance without polymorphism 83

Adding polymorphism 87

Multiple inheritance 91

Virtual inheritance 95

3.5 Object Member Efficiency 101

3.6 Pointer to Data Members 106

Efficiency of pointers to members 109

4 The Semantics of Function 113

4.1 Varieties of Member Invocation 114

Nonstatic member functions 114

Virtual member functions 120

Static member functions 121

4.2 Virtual Member Functions 124

Virtual functions under MI 131

Virtual functions under virtual inheritance 138

4.3 Function Efficiency 139

4.4 Pointer-to-Member Functions 144

Supporting pointer-to-virtual member functions 145

Pointer-to-member functions under M1 147

Pointer-to-member efficiency 149

4.5 Inline Functions 151

Formal arguments 154

Local variables 155

5 Semantics of Construction,Destruction,and Copy 159

Presence of pure virtual destructor 160

Presence of a virtual specification 161

Presence of const within a virtual specification 162

A reconsidered class declaration 162

5.1 Object Construction without Inheritance 163

Abstract data type 165

Concrete base class 168

5.2 Object Construction under Inheritance 172

Virtual inheritance 176

The semantics of the vptr initialization 179

5.3 Object Copy Semantics 184

5.4 Object Efficiency 190

5.5 Semantics of Destruction 196

6 Runtime Semantics 201

6.1 Object Construction and Destruction 203

Global objects 205

Local static objects 209

Arrays of objects 211

Default constructors and arrays 214

6.2 Operators new and delete 215

The semantics of new arrays 218

6.3 Temporary Objects 227

A temporary myth 235

7 On the Cusp of the Object Model 239

7.1 Templates 239

Template instantiation 241

Error reporting within a template 244

Member function instantiation 250

7.2 Exception Handling 254

A quick review of exception handling 256

Exception handling support 260

7.3 Runtime Type Identification 264

Introducing a type safe downcast 266

A type safe dynamic cast 267

References are not pointers 269

Typeid Operator 270

7.4 Efficient,but Inflexible 272

Dynamic Shared Libraries 272

Shared Memory 272

Index 275