Advanced C++ Programming – Detailed Course Outline

Return to C++ and C Courses page
Copyright © 1992 - 2021, Anderson Software Group, Inc.

Section 1 - Templates 

  • Template Functions and Classes
    • Instantiation
    • Overloading
    • Specialization
  • Working with Templates
    • Member Templates
    • Using export
  • STL (Standard Template Library)
    • Containers and Iterators
    • Algorithms

Section 2 - Exception Handling

  • Using Exceptions
    • Exception Formats
    • Exception Specifications
    • Unexpected Exceptions
    • Uncaught Exceptions
  •  Designing with Exceptions
    • Exception Hierarchies
    • Discrimination
    • Using auto_ptr
    • Exceptions thrown from Constructors
    • Exceptions thrown from Destructors
    • Resource Management

Section 3 - Class Design

  • Class Design Topics
    • Mutable Data Members
    • Using explicit with Constructors
    • Member Initialization
  • Class Design Boilerplate
    • Copy Initialization and Assignment
    • Modifiers and Selectors
    • Clone Functions
  • Composite Templates

Section 4 - Object Storage Management

  • New and Delete Formats
    • Nothrow Operator new
    • Placement Formats
    • Explicit Destructor Calls
  • Class Specific New and Delete
    • Overriding Global Operators
    • Memory Pools
  • Reference Counts
    • Design Approach
    • Implementation
    • Copy-on-writes
    • Modifying Existing Classes

Section 5 - RTTI (Run Time Type Identification)

  • Why RTTI?
    • Implications for Class Library Design
    • Controlling Object Behaviors
  • RTTI Operators
    • dynamic_cast
    • typeid
    • type_info Class

Section 6 - Multiple Inheritance

  • Design Concepts
    • Member Initialization
    • Ambiguities
  • Multiple Inheritance Patterns
    • Distinct Bases
    • Multiple Inclusion
    • Virtual Bases

Section 7 - Working with C++

  • Namespaces
    • Namespace Definitions
    • Unnamed Namespaces
    • Using Directives
    • Using Declarations
    • Namespace Aliases
  • C++ Techniques
    • Objects as Return Values
    • Eliminating Temporaries
    • Virtual Constructors
    • Smart Pointers
    • Lvalue and Rvalue Separation

Appendix 

Bibliography