C++ Training¶
C++ Course Outline
Copyright © 2018 Grant Jenks. All Rights Reserved.
Warning
I’m available for hire! Connect with me on LinkedIn.
Day 1¶
C++ is Awesome Presentation¶
Success factors context
History of the language
Modern features
Grand Tour of Modern C++11¶
Uniform initialization syntax and automatic type deduction
Defaulted, delegated, and deleted special member functions
Move semantics, rvalue references, and value categories
Convenient syntax: lambda functions and range-based for-loops
Type-safety: typed-nullptr, typed-enums, and variadic templates
Compile-time features: “constexpr” keyword and static_assert
STL features: multi-threading, smart pointers, chrono, regex
Day 2¶
Object-Oriented Programming¶
Characterizing “has a” and “is a” relationships
Inheritance, “virtual” keyword, and vtable implementation
Special member functions and the rule of 3/5/0
Constructors and member initializer lists
Base and derived class construction and destruction
Access modifiers – public, protected, and private
Resource-Safe C++ Basics¶
Exceptions: “try/catch”, “throw”, “noexcept”, std::exception hierarchy
RAII – Resource Acquisition Is Initialization
Error codes – benefits and drawbacks
Swap operation, “friend” keyword, and copy-and-swap idiom
Exceptions thrown from constructors and destructors
Operator Overloading¶
Commonly overloaded operators
Operator overloading best practices
Prefix vs. postfix increment operators
Member functions vs non-member functions
Type conversions and the “explicit” keyword
Day 3¶
Resource-Safe C++ in Practice¶
Exception-safety levels, guarantees, and neutrality
Member initialization order
Allocations, copies, and exceptions
Delegating constructors
Move-and-swap idiom
Smart Pointers¶
Value Categories – lvalue, rvalue, prvalue, xvalue, glvalue
Value categories and argument passing overloads
Move semantics, copies, and copy elision optimization
Argument-dependent name lookup (Koenig Lookup)
Function call argument evaluation order
Unique-pointer and shared-pointer semantics
Day 4¶
Initialization¶
Braces initialization, type narrowing, and the “most vexing parse”
Benefits and drawbacks of the “auto” and “decltype” keywords
User defined literals
STL Containers¶
Basics: array, vector, deque, forward_list, and list
Container adaptors: stack, queue, and priority_queue
Trees and hashes: set and map with multi-* and unordered_* variants
Iterators: traversal, insertion, output, and utilities
STL Algorithms¶
Basics: fill, for_each, copy, transform, rotate, accumulate, iota
Variations: policy functors, *_if variants, *_n variants
Range-based for-loop semantics
Utilities: bind, operators, hash, pair, tuple
Performance¶
Challenge and science of benchmarking
Understanding profiles and flame graphs
Timing language features: new/delete, exceptions, smart pointers, etc.
Timing STL features: vector vs. list, map vs. unordered_map, etc.