Module 1. Object Oriented C++ Programming Fundamentals
Concepts of Object Oriented Programming
Objects
Information Hiding and Encapsulation
Abstract Data Types
Methods and Messages
Classes
Class Inheritance
Polymorphism
Classes in C++
Data Encapsulation in C and C++
Definition of C++ Classes
Member Data and Functions
this Pointer
Abstract Data Types
Organizing Code for Classes
Functions in C++
Function Prototypes and Type Checking
Conversion of Parameters
Default Arguments
Inline Functions
Function Overloading
Constructors and Destructors
Constructors and Initializations
Object Creation and Destruction
Destructors
Multiple Constructors in a Class
Hidden Constructors
Memory Management in C++
Static, Automatic and Heap Memory
New and Delete
Handling Memory Allocation Errors
Hiding Details of Memory Management in a Class
Implementing a Dynamic String Class
References and Argument Passing in C++
Call by Value
Reference Declarations
Reference Arguments
Copy Constructor
Constant Arguments and Functions
Operator Overloading, Initialization, and Assignment
Operator Overloading
Semantics of Assignment
Initialization vs. Assignment
Overloading Assignment
Type Conversions
Scope and Access Control
Scope in C++
Friend Functions
Const and Enumeration Types
Static Members
Introduction to Inheritance
Inheritance for Modeling and Reuse
Class Derivation
Access Control
Base Class Initialization
Composition
Initializing Class Type Members
Polymorphism and Virtual Functions
Virtual Functions and Dynamic Binding
Polymorphism in C++
Pointer Conversion
Virtual Destructors
Abstract Classes and Pure Virtual Functions
Module 2. Intermediate C++ Programming
ANSI C++ Library
New Header Files
Namespaces in the Standard Library
ANSI C++ String Classes
Templates in the Standard Library
Templates
C++ Template Mechanism
Function Templates
Class Templates
Generic Programming
Implementing a General Array Class
Standard Template Library
Input/Output in C++
Streams I/O Library
Formatted Stream I/O
File I/O
I/O in User Defined Classes
Practical Aspects of C++ Programming
Interfacing C and C++
Namespaces
Reliability in C++ Programs
Testing Considerations
Efficiency Considerations
Exceptions
C++ Exception Mechanism
Exceptions Compared to Other Error Handling Techniques
throw, try and catch
Exception Context and Stack Unwinding
Uncaught Exceptions
Automatic Cleanup in Exception Handling
Runtime Type Information
Runtime Type Information (RTTI) Mechanism
type_info Class and typeid Operator
Type Safe Pointer Conversion
New C++ Cast Syntax
Appendix A. Reading List