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