We provide course about 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.
Course description:
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.
Course outline:
Module 1 - Setting the Scene:
• Recap of C++ and OO features and techniques; ISO C++; Core language additions; Recap of the standard library
Module 2 - Copying and Conversions:
• Staticcast, dynamiccast, constcast and reinterpretcast; The mutable keyword; The explicit keyword; User defined conversion operators; Copy construction and assignment.
Module 3 - Scope and Related Patterns / Idioms:
• Recap of static class members; The Singleton pattern; Defining nested classes; The Handle / Body idiom; Using namespaces effectively.
Module 4 - Using Delegation:
• Recap of association and delegation; The Object Adapter pattern; The Proxy pattern; The Null Object pattern; Defining smart pointers; Lazy loading.
Module 5 - Overloading the subscript operator:
• How to overload []; Why to overload []; Creating multi-dimensional containers
Module 6 - Template Functions:
• Overview of template functions: Implementing generic algorithms using template functions
Module 7 - Template Classes:
• Overview of template classes: Specifying multiple type parameters: Using the standard container classes
Module 8 - Using Iterators and Algorithms:
• What is an iterator? Using standard iterators: Creating generic algorithms using iterators: Function objects
Module 9 - Exception Handling Techniques:
• Recap of exceptions: The standard exception class hierarchy: Uncaught exceptions: Strategies for handling exceptions: Exception safety.
Module 10 - Effective Memory Management:
• Handling allocation failures: Overriding the new operator to customise memory allocation: Caching: Controlling timing of construction and destruction.
Module 11 - Reference Counting Techniques:
• Defining classes that use shared representation objects: Reference-counted strings: Defining smart pointers for garbage collection.
Module 12 - 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.
Module 13 - Advanced Template Techniques:
• Defining non-type template parameters: Defining template adapters: Specifying default template parameters: Specializing templates: Defining trait classes.
Module 14 - Call-back Techniques:
• Implementing call-backs using function pointers: The Command pattern: Function objects: Member function pointers.
Instructor: Andy Olsen
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.
Target audience:
C++ developers who want to experience the full power of the C++ language
Prerequisites:
• 3 - 6 months C++ programming experience
Language:
• The course is given in english