Foreword Bruce Eckel Preface C++: The Making of a Standard An Interview with Bjarne Stroustrup Part I Preliminaries 1 A Better C A Tale Of Two Languages Incremental Journey The Type System Function Prototypes Type-safe Linkage References Type-safe I/O Standard Streams Formatting Manipulators Function Overloading and Function Templates Operator Overloading Inline Functions Default Arguments new and delete Statement Declarations Standard Library Features C Compatibility Summary 2 Pointers Programming on the Edge The Basics Pointer Arithmetic Pass-By-Reference Semantics Generic Pointers const Pointers Pointers and One-Dimensional Arrays Arrays as Parameters Arrays of Strings Pointers and Multidimensional Arrays Higher and Deeper Pointers to Functions Pointers to Member Functions Encapsulation and Incomplete Types Summary 3 The Preprocessor The #include Directive Other Preprocessor Directives Predefined Macros Conditional Compilation Preprocessing Operators Implementing assert Macro Magic Character Sets, Trigraphs, and Digraphs Phases of Translation Summary 4 The Standard C Library, Part I For the Adequate Programmer
5 The Standard C Library, Part II For the Polished Programmer
Appendix 5.1: Character Sets Code Pages Character Set Standards ISO 10646 Unicode 6 The Standard C Library, Part III For the Complete Programmer
va_list's As Arguments An Application Conclusion Appendix 6.1: Floating-point Number Systems Part II Key Concepts 7 Abstraction Data Abstraction Operator Overloading Concrete Data Types Type Abstraction Function Abstraction Summary 8 Templates Generic Programming Function Templates Class Templates Template Parameters Template Specialization Summary 9 Bit Manipulation Bitwise Operators Accessing Individual Bits Large Bitsets Bit Strings Wish List The bitset Template The vector Template Specialization Summary 10 Conversions and Casts Integral Promotion Demotions Arithmetic Conversions Function Prototypes Explicit Conversions Function-style Casts Const Correctness User-Defined Conversions Beefing up operator [ ] New-Style Casts Summary 11 Visibility What's In a Name? Scope Minimal Scoping Class Scope Nested Classes Local Classes Classic Namespaces Namespace Scope Lifetime Lifetime of Temporaries Linkage Type-safe Linkage "Language" Linkage Summary 12 Control Structures Structured Programming Branching Nonlocal Branching Signals Summary References 13 Exceptions Error Handling Alternatives Stack Unwinding Catching Exceptions Standard Exceptions Resource Management Constructors and Exceptions Memory Management Exception Specifications An Error-Handling Strategy Summary 14 Object-oriented Programming Inheritance Heterogeneous Collections Virtual Functions and Polymorphism Abstract Base Classes Case Study: A Framework for Object Persistence Database Access Mapping Objects to Relational Schema PFX Architecture A Code Walkthrough Summary Part III Leveraging the Standard Library 15 Algorithms Complexity Generic Algorithms Function Objects Function Taxonomy Function Object Adapters Algorithm Taxonomy Summary References 16 Containers and Iterators Standard Containers Iterators Iterator Taxonomy Special-Purpose Iterators Container Adapters Associative Containers Applications Non-STL Containers Summary 17 Text Processing scanf printf Substrings The Standard C++ String Class String Streams Wide Strings Summary 18 File Processing Filters Binary Files Record Processing Temporary Files Portability POSIX File Descriptors Copying Files via Descriptors Reading Directory Entries Redirecting Standard Error Encapsulating Directory Operations Summary 19 Time and Date Processing Julian Day Encoding Date Classes for Real Work Calculating the Week of the Year Summary Reference 20 Dynamic Memory Management Ragged Arrays Using the Heap in Standard C The C++ Free Store Deep versus Shallow Copy Handling Memory Allocation Failure Overriding new and delete Placement new Managing the Heap Avoiding Memory Management Summary Appendices A C/C++ Compatibility B Standard C++ Algorithms C Function Objects and Adapters Function Objects Function Object Adapters D Annotated Bibliography The C Practitioner's Booklist The C++ Practitioner's Booklist Index