Course #:WA1080

Advanced C++ Programming Training

This course broadens the skills of a C++ language programmer by examining sophisticated C++ concepts such as templates, exceptions, memory management, advanced inheritance issues, disambiguation of overloaded functions, private and protected inheritance, binary i/o and class libraries.

  At the end of this course, students will be able to:
  • Decide between global functions, friend functions and member functions
  • Code their own memory management routines by overloading operators new and delete
  • Write classes and functions with parameterized types
  • Understand and handle exceptions in C++ programs
  • Disambiguate data and functions using multiple inheritance
  • Understand the difference between various kinds of inheritance
  • Use pointers to class member functions
  • Understand the C++ mechanism to resolve overloaded functions
  • A Review
  • Parameterized Types - Templates
  • Relations of All Kinds
  • Multiple Inheritance
  • Data Structures
  • Function Pointers
  • Exceptions
  • The C++ Standard Template Library
  • Disambiguation
  • File I/O
  • Miscellaneous Topics
  Anybody who has been programming in C++ and wishes to enhance their knowledge of the language.
  Students should have completed the Introduction to C++ Programming course or have equivalent knowledge.
  Five days.

Outline of Advanced C++ Programming Training

  1. What You Should Already Know - A Review

  • Rationale for a new programming paradigm
  • The language of Object Orientation
  • A typical C++ class - a string class
  • Issues regarding member functions
    • member vs non member function
    • friend vs non friend
    • functions - returning references
    • Why does operator= return a reference?
  • Relationships
  • Simple C++ I/O
  • The uses of const

  2. Parameterized Types - Templates

  • Templates
  • Overloading functions
  • Template functions
  • Specializing a template function
  • Disambiguation under specialization
  • Template classes
  • An array template class
  • Instantiating a template class object
  • Rules for templates
  • Non member function w/ a template argument
  • Friends of template classes
  • Templates with multiple type parameters
  • Comments regarding templates

  3. Relations of All Kinds  

  • Uses of Member Initialization Lists
  • Initialization lists under composition
  • Initialization lists under inheritance
  • Initialization lists w/ Multiple Inheritance (MI)
  • Initialization with MI and composition
  • Efficiency
  • operator= and composition
  • Constructors and composition
  • What is not inherited?
  • operator=, construction, and inheritance
  • Designing for inheritance
  • Public inheritance
    • Simple inheritance
    • Virtual functions
    • A shape class hierarchy
    • Polymorphism
    • Pure virtual functions
    • Virtual destructors
    • Abstract base classes
  • Private inheritance
  • Private inheritance vs composition
  • Using relationships
  • Associations

  4. Multiple Inheritance

  • Multiple inheritance
  • Ambiguities
  • Removing ambiguities
  • virtual base classes
  • virtual base classes and the dominance rule
  • Member initialization lists with MI
  • operator= and MI
  • Designing for inheritance

  5. Data Structures  

  • Introduction
  • A simple List
  • Implementation of the list functions
  • Layering type safe classes upon List
  • A template List class
  • Iterators
  • A template iterator
  • Stack and Queue classes
  • A derived template array class

  6. Function Pointers

  • Why have function pointers?
  • Passing functions as arguments
  • Registering functions
  • Callback functions
  • A class with a callback object
  • Registration of exceptions handlers

  7. Exceptions 

  • What are exceptions?
  • Traditional approaches to error handling
  • try, catch, and throw
  • A simple exception handler
  • Multiple catch blocks
  • The exception specification list
  • Rethrowing an exception
  • Cleanup
  • Exception matching
  • Inheritance and exceptions
  • Resource allocation
  • Constructors and exceptions
  • Destructors and exceptions
  • Catch by reference
  • Standard exceptions

  8. The C++ Standard Template Library  

  • History and evolution
  • New features
  • The Standard Template Library
  • STL Components
  • Iterators
  • Example: vector
  • Example: list
  • Example: set
  • Example: map
  • Example: find
  • Example: merge
  • Example: accumulate
  • Function objects
  • Adaptors

  9. Disambiguation

  • Conversion
  • int Conversions
  • float
  • Arithmetic and pointer conversions
  • Inheritance based conversion
  • Overloaded functions
  • Exact match
  • Match with promotion
  • Match with standard conversion
  • User defined conversion
  • Constructors as conversion operators
  • Ambiguities

  10. File I/O

  • Introduction
  • Error checking
  • Overloading << and >>
  • Formatted I/O
  • Disk files
  • Examples of seekg, tellg, and close
  • Reading and writing objects to the disk
  • Internal transmission of data
  • A larger I/O example: Spell checker
  • Treating a file as an array

  11. Miscellaneous Topics

  • New features in the standard C++ language
  • Namespaces
  • Use counts
  • Run Time Type Identification
  • New casts
  • Overloading operator new and delete
  • How virtual functions are implemented
  • Having a limited number of objects
  • Smart pointers
We regularly offer classes in these and other cities. Atlanta, Austin, Baltimore, Calgary, Chicago, Cleveland, Dallas, Denver, Detroit, Houston, Jacksonville, Miami, Montreal, New York City, Orlando, Ottawa, Philadelphia, Phoenix, Pittsburgh, Seattle, Toronto, Vancouver, Washington DC.