1. A Quick Tour of C++.
Preview.
First Example.
Basic Constructs.
Inheritance.
Exceptions and Namespaces.
Generic Programming.
Second Example: Arithmetic Expressions.
Version I.
Version II.
2. Procedural Programming.
Preview.
Introduction to Principles of Software Design and Implementation.
Main Program.
Basics: Types, Control Structures and Simple I/O.
Functions.
Pointers and Dynamic Memory Management.
Static Local Variables.
File Organization and Standard Facilities.
Exercises.
3. Object-Based Programming, Part I.
Preview.
Basic Terminology and Class Definition.
Exception Handling.
Managing Objects.
Constant and Static Features.
Pure Static Classes.
Initialization of Local and Global Variables.
Reference Types and Their Applications.
Resources Management, Part I: The Use of Constructors, Assignment Operator and Destructor.
Arrays.
Exercises.
4. Object-Based Programming, Part II.
Preview.
UML Class Notations.
Reusability through Object Composition.
Managing the Creational Process, Part I.
First Design Pattern: Singleton.
Namespaces, Part II.
Need for Recompiling and Header Files, Part I.
Application: List of Students.
Exercises.
5. Object-Oriented Programming, Part I.
Preview.
Basic Terminology and a Derived Class Definition.
Public Inheritance.
Creating Objects.
RTTI and Type Conversions.
Copy Constructors.
Scope and Visibility Modifiers.
Polymorphism and Virtual Functions.
Destructing Objects.
Overloaded Assignments.
Overloading and Overriding.
Passing Arguments by Value and by Reference.
Standard Exceptions.
Resource Management, Part II.
Abstract Operations and Classes.
Friends.
Exercises.
6. Object-Oriented Programming, Part II.
Preview.
Managing the Creational Process, Part II: Abstract Factory Design Pattern.
Private Inheritance.
Protected Inheritance.
Revisiting Inheritance.
Programming to an Interface.
Application of Design Patterns: Arithmetic Expressions.
Exercises.
7. Introduction to Generic Programming: Parameterized Types.
Preview.
Introduction.
Overloaded Operators.
Proxy Design Pattern.
Designing Iterators.
Templates.
Resource Management, Part III.
Inheritance and Delegation versus Parameterized Types.
Applications of Templates to Design Patterns.
Exercises.
8. Generic Programming Using STL.
Preview.
Introduction.
Introduction to Iterators and Containers.
Iterators, Part I.
Making Algorithms Generic.
Generic Algorithms.
Containers and Their Common Types and Operations.
Iterators, Part II.
Sequence Operations.
Associative Containers: Sets, Maps, Multisets and Multimaps.
STL and Error Handling.
Reference Counting and STL Containers.
Exercises.
9. Miscellaneous Topics.
Preview.
Input/Output Library.
Separate Compilation and Linkage.
Generic Pointers and Pointers to Functions.
Overloading Memory Management.
Debugging and Handling Errors.
Type ID.
Multiple Inheritance.
Pointers to Members and Function Adapters.
Heterogeneous Containers and Composite and Visitor Design Patterns.
Exercises.
Appendices.
A. The List of Tables, Figures and Examples.
B. The List of Idioms, Patterns and Concepts.
C. The List of C++ Keywords.
D. Numeric Types.
E. Strings Operations.
F. The List of Generic Algorithms.
G. The List of Standard Header Files.
H. The List of C++ Compilers and STL Libraries.
I. Bibliography.