Advanced C++ Programming

C++ is a powerful and complex language. This course covers advanced C++ language features and development techniques, to help you get the most out of the language. The course also provides thorough coverage of the C++ Standard Library, and explains how to implement OO design patterns and C++ programming idioms to reinforce best practice in your code.


C++ developers who want to experience the full power of the C++ language.


3-6 months C++ programming experience.

Course outline:

  • Setting the Scene: Recap of C++ and OO features and techniques; ISO C++; Core language additions; Recap of the standard library
  • Copying and Conversions: staticcast, dynamiccast, constcast and reinterpretcast; The mutable keyword; The explicit keyword; User defined conversion operators; Copy construction and assignment
  • Scope and Related Patterns/Idioms: Recap of static class members; The Singleton pattern; Defining nested classes; The Handle/Body idiom; Using namespaces effectively
  • Using Delegation: Recap of association and delegation; The Object Adapter pattern; The Proxy pattern; The Null Object pattern; Defining smart pointers; Lazy loading
  • Overloading the subscript operator: How to overload []; Why to overload []; Creating multi-dimensional containers
  • Template Functions: Overview of template functions; Implementing generic algorithms using template functions
  • Template Classes: Overview of template classes; Specifying multiple type parameters; Using the standard container classes
  • Using Iterators and Algorithms: What is an iterator? Using standard iterators; Creating generic algorithms using iterators; Function objects
  • Exception Handling Techniques: Recap of exceptions; The standard exception class hierarchy; Uncaught exceptions; Strategies for handling exceptions; Exception safety
  • Effective Memory Management: Handling allocation failures; Overriding the new operator to customise memory allocation; Caching; Controlling timing of construction and destruction
  • Reference Counting Techniques:Defining classes that use shared representation objects; Reference-counted strings; Defining smart pointers for garbage collection
  • Inheritance Techniques: Defining interfaces; Multiple inheritance; Virtual base classes; Interface classes; Mixin classes; Runtime type information (RTTI); Private and protected inheritance; The Class Adapter pattern
  • Advanced Template Techniques: Defining non-type template parameters; Defining template adapters; Specifying default template parameters; Specializing templates; Defining trait classes
  • Call-back Techniques: Implementing call-backs using function pointers; The Command pattern; Function objects; Member function pointers

Andy Olsen - author of the course

Andy is a freelance consultant and instructor based in the UK, working mostly in the City of London and Oxford. Andy has been working with .NET since the Beta 1 days and has extensive experience in many facets of .NET development including WCF, WPF, WF, ASP.NET MVC Web development, and mobile applications. Andy has designed and written many Microsoft Official Curriculum courses in the last decade, and has been engaged as author and technical reviewer with Apress on some of their biggest selling books.

Other relevant courses