The Design and Evolution of C++

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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