《C++语言的设计和演化 英文版》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)Bjarne Stroustrup著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2002
  • ISBN:7111095928
  • 页数:461 页
图书介绍:

Notes to the Reader 1

Introduction 1

How to Read this Book 2

C++ Timeline 4

Focus on Use and Users 4

Programming Languages 5

References 7

Part Ⅰ: 17

The Prehistory of C++ 19

1.1 Simula and Distributed Systems 19

1.2 C and Systems Programming 22

1.3 General Background 23

C with Classes 27

2.1 The Birth of C with Classes 27

2.2 Feature overview 29

2.3 Classes 30

2.4 Run-Time Efficiency 32

2.5 The Linkage Model 34

2.6 Static Type Checking 40

2.7 Why C? 43

2.8 Syntax Problems 45

2.9 Derived Classes 49

2.10 The Protection Model 53

2.11 Run-Time Guarantees 56

2.12 Minor Features 58

2.13 Features Considered,but not Provided 59

2.14 Work Environment 60

The Birth of C++ 63

3.1 From C with Classes to C++ 63

3.2 Aims 65

3.3 Cfront 66

3.4 Language Features 71

3.5 Virtual Functions 72

3.6 Overloading 78

3.7 References 85

3.8 Constants 89

3.9 Memory Management 91

3.10 Type Checking 92

3.11 Minor Features 93

3.12 Relationship to Classic C 100

3 13 Tools for Language Design 103

3.14 The C++ Programming Language(1st edition) 105

3.15 The Whatis?Paper 106

C++ Language Design Rules 109

4.1 Rules and Principles 109

4.2 General Rules 110

4.3 Design Support Rules 114

4.4 Language-Technical Rules 117

4.5 Low-Level Programming Support Rules 120

4.6 A Final Word 122

Chronology 1985-1993 123

5.1 Introduction 123

5.2 Release 2.0 124

5.3 The Annotated Reference Manual 126

5.4 ANSI and ISO Standardization 128

Standardization 133

6.1 What is a Standard? 133

6.2 How does the Committee Operate? 136

6.3 Clarifications 138

6.4 Extensions 147

6.5 Examples of Proposed Extensions 153

Interest and Use 163

7.1 The Explosion in Interest and Use 163

7.2 Teaching and Learning C++ 168

7.3 Users and Applications 173

7.4 Commercial Competition 175

Libraries 181

8.1 Introduction 181

8.2 C++ Library Design 182

8.3 Early Libraries 184

8.4 Other Libraries 191

8.5 A Standard Library 194

Looking Ahead 195

9.1 Introduction 195

9.2 Retrospective 195

9.3 Only a Bridge? 200

9.4 What Will Make C++ Much More Effective? 205

Part Ⅱ 209

Memory Management 211

10.1 Introduction 211

10.2 Separating Allocation and Initialization 212

10.3 Array Allocation 213

10.4 Placement 214

10.5 Deallocation Problems 216

10.6 Memory Exhaustion 218

10.7 Automatic Garbage Collection 219

Overloading 223

11.1 Introduction 223

11.2 Overload Resolution 224

11.3 Type-Safe Linkage 232

11.4 Object Creation and Copying 237

11.5 Notational Convenience 241

11.6 Adding Operators to C++ 247

11.7 Enumerations 253

Multiple Inheritance 257

12.1 Introduction 257

12.2 Ordinary Base Classes 258

12.3 Virtual Base Classes 259

12.4 The Object Layout Model 264

12.5 Method Combination 268

12.6 The Multiple Inheritance Controversy 269

12.7 Delegation 272

12.8 Renaming 273

12.9 Base and Member Initializers 275

Class Concept Refinements 277

13.1 Introduction 277

13.2 Abstract Classes 277

13.3 const Member Functions 284

13.4 Static Member Functions 288

13.5 Nested Classes 289

13.6 Inherited∷ 290

13.7 Relaxation of Overriding Rules 293

13.8 Multi-methods 297

13.9 Protected Members 301

13.10 Improved Code Generation 302

13.11 Pointers to Members 303

Casting 305

14.1 Major Extensions 305

14.2 Run-Time Type Information 306

14.3 A New Cast Notation 327

Templates 337

15.1 Introduction 337

15.2 Templates 338

15.3 Class Templates 341

15.4 Constraints on Template Arguments 343

15.5 Avoiding Code Replication 346

15.6 Function Templates 348

15.7 Syntax 355

15.8 Composition Techniques 356

15.9 Template Class Relationships 360

15.10 Template Instantiation 365

15.11 Implications of Templates 378

Exception Handling 383

16.1 Introduction 383

16.2 Aims and Assumptions 384

16.3 Syntax 385

16.4 Grouping 386

16.5 Resource Management 388

16.5 Resumption vs.Termination 390

16.5 Asynchronous Events 393

16.6 Multi-level Propagation 394

16.7 Static Checking 395

16.8 Invariants 397

Namespaces 399

17.1 Introduction 399

17.2 The Problem 400

17.3 Ideals for a Solution 402

17.4 The Solution:Narnespaces 404

17.5 Implications for Classes 417

17.6 C Compatibility 420

The C Preprocessor 423

18.1 Cpp 423

Index 427