| |
| |
Preface | |
| |
| |
| |
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 | |
| |
| |
| |
Making and Using Objects | |
| |
| |
The process of language translation | |
| |
| |
Tools for separate compilation | |
| |
| |
Your first C++ program | |
| |
| |
More about iostreams | |
| |
| |
Introducing strings | |
| |
| |
Reading and writing files | |
| |
| |
Introducing vector | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
Hiding the Implementation | |
| |
| |
Setting limits | |
| |
| |
C++ access control | |
| |
| |
Friends | |
| |
| |
Object layout | |
| |
| |
The class | |
| |
| |
Handle classes | |
| |
| |
| |
Initialization and Cleanup | |
| |
| |
Guaranteed initialization with the constructor | |
| |
| |
Guaranteed cleanup with the destructor | |
| |
| |
Elimination of the definition block | |
| |
| |
Stash with constructors and destructors | |
| |
| |
Stack with constructors and destructors | |
| |
| |
Aggregate initialization | |
| |
| |
Default constructors | |
| |
| |
| |
Function Overloading and Default Arguments | |
| |
| |
More name decoration | |
| |
| |
Overloading example | |
| |
| |
Unions | |
| |
| |
Default arguments | |
| |
| |
Choosing overloading vs. default arguments | |
| |
| |
| |
Constants | |
| |
| |
Value substitution | |
| |
| |
Pointers | |
| |
| |
Function arguments and return values | |
| |
| |
Classes | |
| |
| |
Volatile | |
| |
| |
| |
Inline Functions | |
| |
| |
Preprocessor pitfalls | |
| |
| |
Inline functions | |
| |
| |
Stash and Stack with inlines | |
| |
| |
Inlines and the compiler | |
| |
| |
Reducing clutter | |
| |
| |
More preprocessor features | |
| |
| |
Improved error checking | |
| |
| |
| |
Name Control | |
| |
| |
Static elements from C | |
| |
| |
Namespaces | |
| |
| |
Static members in C++ | |
| |
| |
Static initialization dependency | |
| |
| |
Alternate linkage specifications | |
| |
| |
| |
References and the Copy-Constructor | |
| |
| |
Pointers in C++ | |
| |
| |
References in C++ | |
| |
| |
The copy-constructor | |
| |
| |
Pointers to members | |
| |
| |
| |
Operator Overloading | |
| |
| |
Warning and reassurance | |
| |
| |
Syntax | |
| |
| |
Overloadable operators | |
| |
| |
Non-member operators | |
| |
| |
Overloading assignment | |
| |
| |
Automatic type conversion | |
| |
| |
| |
Dynamic Object Creation | |
| |
| |
Object creation | |
| |
| |
Early examples redesigned | |
| |
| |
New and delete for arrays | |
| |
| |
Running out of storage | |
| |
| |
Overloading new and delete | |
| |
| |
| |
Inheritance and Composition | |
| |
| |
Composition syntax | |
| |
| |
Inheritance syntax | |
| |
| |
The constructor initializer list | |
| |
| |
Combining composition and inheritance | |
| |
| |
Name hiding | |
| |
| |
Functions that don't automatically inherit | |
| |
| |
Choosing composition vs. inheritance | |
| |
| |
Protected | |
| |
| |
Operator overloading and inheritance | |
| |
| |
Multiple inheritance | |
| |
| |
Incremental development | |
| |
| |
Upcasting | |
| |
| |
| |
Polymorphism and Virtual Functions | |
| |
| |
Evolution of C++ programmers | |
| |
| |
Upcasting | |
| |
| |
The problem | |
| |
| |
Virtual functions | |
| |
| |
How C++ implements late binding | |
| |
| |
Why virtual functions? | |
| |
| |
Abstract base classes and pure virtual functions | |
| |
| |
Inheritance and the VTABLE | |
| |
| |
Overloading and overriding | |
| |
| |
Virtual functions and constructors | |
| |
| |
Destructors and virtual destructors | |
| |
| |
Operator overloading | |
| |
| |
Downcasting | |
| |
| |
| |
Introduction to Templates | |
| |
| |
Containers | |
| |
| |
Overview of templates | |
| |
| |
Template syntax | |
| |
| |
Stack and Stash as templates | |
| |
| |
Turning ownership on and off | |
| |
| |
Holding objects by value | |
| |
| |
Introducing iterators | |
| |
| |
Why iterators? | |
| |
| |
| |
Coding Style | |
| |
| |
| |
Programming Guidelines | |
| |
| |
| |
Recommended Reading | |
| |
| |
C | |
| |
| |
General C++ | |
| |
| |
Depth and dark corners | |
| |
| |
Analysis and design | |
| |
| |
Index | |