The inventor of C++ presents the definitive insider's guide to the design and development of the C++ programming language. Without ommitting critical details or getting bogged down in technicalities, Stroustrup presents his unique insights into the decisions that shaped C++. Every C++ programmer will benefit from Stroustrup's explanations of the 'why's' behind C++ from the earliest features, such as the original class concept, to the latest extensions, such as new casts and explicit template instantiation. Some C++ design decisions have been universally praised, while others remain controversial, and debated vigorously; still other features have been rejected based on experimentation. In this book, Stroustrup dissects many of these decisions to present a case study in "real object- oriented language development" for the working programmer. In doing so, he presents his views on programming and design in a concrete and useful way that makes this book a must-buy for every C++ programmer. Features*Written by the inventor of C++ Stroustrup *Provides insights into the design decisions which shaped C++. *Gives technical summaries of C++.* Discusses the latest language features: templates, exceptions, run-time type information, and namespaces. *Presents Stroustrup's unique programming and design views. 0201543303B04062001
Author(s): Bjarne Stroustrup
Edition: 1
Language: English
Pages: 472
Tags: Библиотека;Компьютерная литература;C / C++;
Cover......Page __sk_0000.djvu
Copyright......Page __sk_0002.djvu
Contents......Page __sk_0005.djvu
Preface......Page __sk_0003.djvu
Acknowledgments......Page __sk_0004.djvu
Introduction......Page __sk_0011.djvu
How to Read this Book......Page __sk_0012.djvu
Focus on Use and Users......Page __sk_0014.djvu
Programming Languages......Page __sk_0015.djvu
References......Page __sk_0017.djvu
1.1 Simula and Distributed Systems......Page __sk_0029.djvu
1.2 C and Systems Programming......Page __sk_0032.djvu
1.3 General Background......Page __sk_0033.djvu
2.1 The Birth of C with Classes......Page __sk_0037.djvu
2.2 Feature overview......Page __sk_0039.djvu
2.3 Classes......Page __sk_0040.djvu
2.4 Run-Time Efficiency......Page __sk_0042.djvu
2.5 The Linkage Model......Page __sk_0044.djvu
2.6 Static Type Checking......Page __sk_0050.djvu
2.7 Why C?......Page __sk_0053.djvu
2.8 Syntax Problems......Page __sk_0055.djvu
2.9 Derived Classes......Page __sk_0059.djvu
2.10 The Protection Model......Page __sk_0063.djvu
2.11 Run-Time Guarantees......Page __sk_0066.djvu
2.12 Minor Features......Page __sk_0068.djvu
2.13 Features Considered, but not Provided......Page __sk_0069.djvu
2.14 Work Environment......Page __sk_0070.djvu
3.1 From C with Classes to C++......Page __sk_0073.djvu
3.2 Aims......Page __sk_0075.djvu
3.3 Cfront......Page __sk_0076.djvu
3.4 Language Features......Page __sk_0081.djvu
3.5 Virtual Functions......Page __sk_0082.djvu
3.6 Overloading......Page __sk_0088.djvu
3.7 References......Page __sk_0095.djvu
3.8 Constants......Page __sk_0099.djvu
3.9 Memory Management......Page __sk_0101.djvu
3.10 Type Checking......Page __sk_0102.djvu
3.11 Minor Features......Page __sk_0103.djvu
3.12 Relationship to Classic C......Page __sk_0110.djvu
3.13 Tools for Language Design......Page __sk_0113.djvu
3.14 The C++ Programming Language (1st edition)......Page __sk_0115.djvu
3.15 The Whatis? Paper......Page __sk_0116.djvu
4.1 Rules and Principles......Page __sk_0119.djvu
4.2 General Rules......Page __sk_0120.djvu
4.3 Design Support Rules......Page __sk_0124.djvu
4.4 Language-Technical Rules......Page __sk_0127.djvu
4.5 Low-Level Programming Support Rules......Page __sk_0130.djvu
4.6 A Final Word......Page __sk_0132.djvu
5.1 Introduction......Page __sk_0133.djvu
5.2 Release 2.0......Page __sk_0134.djvu
5.3 The Annotated Reference Manual......Page __sk_0136.djvu
5.4 ANSI and ISO Standardization......Page __sk_0138.djvu
6.1 What is a Standard?......Page __sk_0143.djvu
6.2 How does the Committee Operate?......Page __sk_0146.djvu
6.3 Clarifications......Page __sk_0148.djvu
6.4 Extensions......Page __sk_0157.djvu
6.5 Examples of Proposed Extensions......Page __sk_0163.djvu
7.1 The Explosion in Interest and Use......Page __sk_0173.djvu
7.2 Teaching and Learning C++......Page __sk_0178.djvu
7.3 Users and Applications......Page __sk_0183.djvu
7.4 Commercial Competition......Page __sk_0185.djvu
8.1 Introduction......Page __sk_0191.djvu
8.2 C++ Library Design......Page __sk_0192.djvu
8.3 Early Libraries......Page __sk_0194.djvu
8.4 Other Libraries......Page __sk_0201.djvu
8.5 A Standard Library......Page __sk_0204.djvu
9.1 Introduction......Page __sk_0205.djvu
9.2 Retrospective......Page __sk_0206.djvu
9.3 Only a Bridge?......Page __sk_0210.djvu
9.4 What Will Make C++ Much More Effective?......Page __sk_0215.djvu
10.1 Introduction......Page __sk_0221.djvu
10.2 Separating Allocation and Initialization......Page __sk_0222.djvu
10.3 Array Allocation......Page __sk_0223.djvu
1O.4 Placement......Page __sk_0224.djvu
10.5 Deallocation Problems......Page __sk_0226.djvu
10.6 Memory Exhaustion......Page __sk_0228.djvu
10.7 Automatic Garbage Collection......Page __sk_0229.djvu
11.1 Introduction......Page __sk_0233.djvu
11.2 Overload Resolution......Page __sk_0234.djvu
11.3 Type-Safe Linkage......Page __sk_0242.djvu
11.4 Object Creation and Copying......Page __sk_0247.djvu
1].5 Notational Convenience......Page __sk_0251.djvu
11.6 Adding Operators to C++......Page __sk_0257.djvu
11.7 Enumerations......Page __sk_0263.djvu
12.1 Introduction......Page __sk_0267.djvu
12.2 Ordinary Base Classes......Page __sk_0268.djvu
12.3 Virtual Base Classes......Page __sk_0269.djvu
12.4 The Object Layout Model......Page __sk_0274.djvu
12.5 Method Combination......Page __sk_0278.djvu
12.6 The Multiple Inheritance Controversy......Page __sk_0279.djvu
12.7 Delegation......Page __sk_0282.djvu
12.8 Renaming......Page __sk_0283.djvu
12.9 Base and Member Initializers......Page __sk_0285.djvu
13.2 Abstract Classes......Page __sk_0287.djvu
13.3 const Member Functions......Page __sk_0294.djvu
13.4 Static Member Functions......Page __sk_0298.djvu
13.5 Nested Classes......Page __sk_0299.djvu
13.6 Inherited::......Page __sk_0300.djvu
13.7 Relaxation of Overriding Rules......Page __sk_0303.djvu
13.8 Multi-methods......Page __sk_0307.djvu
13.9 Protected Members......Page __sk_0311.djvu
13.10 Improved Code Generation......Page __sk_0312.djvu
13.11 Pointers to Members......Page __sk_0313.djvu
14.1 Major Extensions......Page __sk_0315.djvu
14.2 Run-Time Type Information......Page __sk_0316.djvu
14.3 A New Cast Notation......Page __sk_0337.djvu
15.1 Introduction......Page __sk_0347.djvu
15.2 Templates......Page __sk_0348.djvu
15.3 Class Templates......Page __sk_0351.djvu
15.4 Constraints on Template Arguments......Page __sk_0353.djvu
15.5 Avoiding Code Replication......Page __sk_0356.djvu
15.6 Function Templates......Page __sk_0358.djvu
15.7 Syntax......Page __sk_0365.djvu
15.8 Composition Techniques......Page __sk_0366.djvu
15.9 Template Class Relationships......Page __sk_0370.djvu
15.10 Template Instantiation......Page __sk_0375.djvu
15.11 Implications of Templates......Page __sk_0388.djvu
16.1 Introduction......Page __sk_0393.djvu
16.2 Aims and Assumptions......Page __sk_0394.djvu
16.3 Syntax......Page __sk_0395.djvu
16.4 Grouping......Page __sk_0396.djvu
16.5 Resource Management......Page __sk_0398.djvu
16.6 Resumption vs. Termination......Page __sk_0400.djvu
16.7 Asynchronous Events......Page __sk_0403.djvu
16.8 Multi-level Propagation......Page __sk_0404.djvu
16.9 Static Checking......Page __sk_0405.djvu
16.10 Invariants......Page __sk_0407.djvu
17.1 Introduction......Page __sk_0409.djvu
17.2 The Problem......Page __sk_0410.djvu
17.3 Ideals for a Solution......Page __sk_0412.djvu
17.4 The Solution: Namespaces......Page __sk_0414.djvu
17.5 Implications for Classes......Page __sk_0427.djvu
17.6 C Compatibility......Page __sk_0430.djvu
18.1 Cpp......Page __sk_0433.djvu
Index......Page __sk_0437.djvu