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