What's inside... Preface What's new in the second edition Prerequisites Learning C++ Goals Chapters Exercises Source code Language standards The book's CD ROM CD ROMs, seminars and consulting Errors About the cover Book design and production Acknowledgements 1: Introduction to Objects The progress of abstraction An object has an interface The hidden implementation Reusing the implementation Inheritance: reusing the interface Interchangeable objects with polymorphism Creating and destroying objects Exception handling: dealing with errors Analysis and design Extreme programming Why C++ Succeeds Strategies for transition Summary 2: Making & Using Dbjects The process of fanguage transtation Tools for separate compilation Your first C++ program More about iostreams Introducing strings Reading and writing files Introducing vector Summary Exercises 3: The C in C++ Creating functions Controlling execution Introduction to operators Introduction to data types Scoping Specifying storage allocation Operators and their use Composite type creation Debugging hints Function addresses Make:managing separate compilation Summary Exercises 4: Data Abstraction A tiny C-like library What's wrong? The basic object What's an object? Abstract data typing Object details Header file etiquette Nested structures Summary Exercises 5: Hiding the Implementation Setting limits C++ access control Friends Object layout The class Handle classes Summary Exercises 6: Initialization & Cleanup Guaranteed InitiaIization with the constructor Guaranteed cleanup with the destructor Elimination of the definition block Stash with constructors and destructors Stack with constructors & destructors Aggregate initialization Default constructors Summary Exercises 7: Function Overloading & Default Arguments More name decoration Overloading example unions Default arguments Choosing overloading vs. default arguments Summary Exercises 8: Constants Value substitution Pointers Function arguments & return values Classes volatife Summary Exercises 9: Inline Functions Preprocessor pitfalls Inline functions Stash & Stack with inlines Inlines & the compiler Reducing clutter More preprocessor features Improved error checking Summary Exercises 10: Name Control Static elements from C Namespaces Static members in C++ Static initialization dependency Alternate linkage specifications Summary Exercises 11:References & the Copy-Constructor Pointers in C++ References in C++ The copy- constructor Pointers to members Summary Exercises 12: Operator Overloading Warning & reassurance Syntax Overloadable operators Non-member operators Overloading assignment Automatic type conversion Summary Exercises 13: Dynamic Object Creation Object creation Early examples redesigned new & delete for arrays Running out of storage Overloading new & delete Summary Exercises 14: Inheritance & Composition Composition syntax Inheritance syntax The constructor initializer list Combining composition & inheritance Name hiding Functions that don't automatically inherit Choosing composition vs. inheritance protected Operator overloading & inheritance Multiple inheritance Incremental development Upcasting Summary Exercises 15: Polymorphism & Virtual Functions Evolution of C++ programmers Upcasting The problem virtual functions How C++ implements late binding Why virtual functions? Abatract base classes and pure virtual functions Inheritance and the VTABLE Overloading & overriding virtual functions & constructors Destructors and virtual destructors Operator overloading Downcastion Summary Exercises 16:Introduction to Templates Containers Overview of templates Template syntax Stack and Stash as templates Turning ownership on and off Holdinq objects by value Introducing iterators Why iterators? Summary Exercises Coding Style Programming lidelines Recommended ading C General C+ + Depth & dark corners Analysis & design Index