Table of Contents
1. Writing an ANSI C++ Program.
Getting Ready to Program.
A First Program.
Problem Solving Recipes.
Implementing Our Algorithm in C++.
Software Engineering: Style.
Dr. P's Prescriptions.
C++ compared with Java.
2. Native Types and Statements. Program Elements.
Input/Output.
Program Structure.
Simple Types.
The Traditional Conversions.
Enumeration Types.
Expressions.
Statements.
Software Engineering: Debugging.
Dr. P's Prescriptions.
C++ compared with Java.
3. Functions, Pointers and Arrays. Functions.
Function Invocation.
Function Definition.
The return Statement.
Function Prototypes.
Default Arguments.
Functions as Arguments.
Overloading Functions.
Inlining.
Scope and Storage Class.
Namespaces.
Pointer Types.
Reference Declarations.
The Uses of void.
Arrays.
Arrays and Pointers.
Passing Arrays to Functions.
Core Language ADT: char* String.
Multidimensional Arrays.
Operators new and delete.
Software Engineering: Program Correctness.
Dr. P's Prescriptions.
C++ Compared with Java.
4. Classes and Abstract Data Types. The Aggregate Type class and struct.
Member Selection Operator.
Member Functions.
Access: Private and Public.
Classes.
Class Scope.
An Example: Flushing.
The this Pointer.
static and const Members.
A Container Class Example: ch_stack.
Software Engineering: Class Design.
Dr. P's Prescriptions.
C++ Compared with Java.
Unions.
Bit Fields.
5. Ctors, Dtors, Conversions and Operator Overloading. Classes with Constructors.
Improving the point Class.
Constructing a Stack.
Classes with Destructors.
Members That Are Class Types.
Example: A Singly Linked List.
Strings Using Reference Semantics.
Constructor Issues and Mysteries.
Polymorphism.
Overloading and Function Selection.
Friend Functions.
Overloading Operators.
Unary Operator Overloading.
Binary Operator Overloading.
Overloading =, [ ] and ( ).
Overloading << and >>.
Overloading _>.
Overloading new and delete.
Software Engineering: Overloading.
Dr. P's Prescriptions.
C++ Compared with Java.
6. Templates and Generic Programming. Template Class stack.
Function Templates.
Generic Code Development: Quicksort.
Class Templates.
Parameterizing the Class vector.
Using STL: string, vector and complex.
Software Engineering: Generics.
Dr. P's Prescriptions.
C++ Compared with Java.
7. Standard Template Library. A Simple STL Example.
Containers.
Iterators.
Algorithms.
Numerical Integration Made Easy.
STL: Function Objects.
Allocators.
Software Engineering: STL Use.
Dr. P's Prescriptions.
C++ Compared with Java.
8. Inheritance and OOP. A Derived Class.
A Student ISA Person.
Virtual Functions: How T is Dynamically Determined.
Abstract Base Classes.
Templates and Inheritance.
Multiple Inheritance.
Inheritance and Design.
Runtime Type Identification.
Software Engineering: Inheritance.
Dr. P's Prescriptions.
C++ Compared with Java.
9. Input/Output. The Output Class ostream.
Formatted Output and iomanip.
User-Defined Types: Output.
The Input Class istream.
Files.
Using Strings as Streams.
The Functions and Macros in ctype.
Using Stream States.
Mixing I/O Libraries.
Software Engineering: IO.
Dr. P's Prescriptions.
C++ Compared with Java.
10. Exceptions and Program Correctness. Using the assert Library.
C++ Exceptions.
Throwing Exceptions.
try Blocks.
Handlers.
Converting Assertions to Exceptions.
Exception Specification.
terminate() and unexpected().
Standard Exceptions and Their Uses.
Software Engineering: Exception Objects.
Dr. P's Prescriptions.
C++ Compared with Java.
11. OOP Using C++. OOP Language Requirements.
OOP: The Dominant Programming Methodology.
Designing with OOP in Mind.
Class-Responsibility-Collaborator.
Design Patterns.
Software Engineering: Last Thoughts.
Dr. P's Prescriptions.
C++ Compared with Java.