Highlights
- Learn to use Language Features Correctly
- Understand how Templates work with functions
- Gain an introduction to metaprogramming
- Explore C++ Idioms and Design Patterns
- Understand smart pointers
- Learn Policy-Based Design
- Exploit Advanced Language & Library Features of C++ And Get Increased Productivity
- Apply Containers: Sequence and Associative containers and Adapters
- Learn Standard Template Library with concept-based programming
- Explore additional features when extra time available
Course Details
Part 1: Using Language Features Correctly
Const and Casting
- Const correctness
- Overloading on const
- C++ cast operators
- Mutable
Conversions and Scope
- Standard conversions
- Converting constructors
- User defined conversions
- Namespaces
- Koenig lookup
- Nested types
- Static
Proper Exception Handling
- Throwing and catching correctly
- Exception safe code
Memory Management
- The new handler
- Placement new
- Overloading new and delete
Part 2: Templates
Template Functions
- What are templates?
- Implementing template functions
- Template instantiation
Template Classes
- Creating a template class
- Class instantiation
- Non-type template parameters
- Specialization
Template Metaprogramming
- A brief introduction to metaprogramming
- Template metaprogramming vs constexpr
Part 3: C++ Idioms and Design Patterns
Implementing Value Types
- What are value types?
- Construction and destruction
- Copying and assignment
- Operator overloading
Value Categories
- Consideration of C++ Value Categories
The Handle/body Idiom
- The Bridge design pattern
- Using Bridge to decouple compilation
- Implementing handle/body
Functors
- What are functors?
- Implementing functors using operator overloading
- Relationship to lambdas
Smart Pointers
- What are smart pointers?
- Uses of smart pointers in C++
- Implementing a simple smart pointer
- Reference counting and smart pointers
- std::auto_ptr (deprecated)
- std::shared_ptr and std::unique_ptr
Singletons
- The Singleton design pattern
- A naïve implementation
- Problems with Singleton in C++
- Controlling Singleton lifetime
Policy-Based Design
- Efficient library design
- Mixing templates and multiple inheritance
- Policies and policy classes
Part 4: Standard Template Library
STL concepts
- Concept-based programming
- Containers; iterators; function objects and algorithms
Containers
- Sequence containers
- Associative containers
- Adapters
Traits
- The need for traits
- Implementation of traits in STL
Iterators
- The Iterator design pattern
- Iterator concepts in C++
- Iterators and containers
- Implementing and using iterators
- Stream iterators
Algorithms
- The STL standard algorithms
- Creating and using algorithm
- Use of function objects and lambdas
Optional topics (extra time on private courses)
- Template related features
- Concepts
- Ranges (Library)
- Threading
- C++ 20 / 23 Library features
Who should attend
Feedback
4.8 out of 5 average
"A good and thorough course for advanced C++ techniques - well delivered by zoom, in a small group allowing some really one to one tutoring to take place."
ZL, Data Analyst, C++ Advanced, June 2021
“JBI did a great job of customizing their syllabus to suit our business needs and also bringing our team up to speed on the current best practices. Our teams varied widely in terms of experience and the Instructor handled this particularly well - very impressive”
Brian F, Team Lead, RBS, Data Analysis Course, 20 April 2022