-
Learning by doing
-
Trainers with practical experience
-
Classroom training
-
Detailed course material
-
Clear content description
-
Tailormade content possible
-
Training that proceeds
-
Small groups
In the course Advanced C++ the new and advanced aspects of the C++ language based on the standards C++11, C++14, C++17 and C++20 are extensively discussed.
The course starts with an overview of the features introduced in C++11 such as type inference, initializer lists, range based for loop, lambda functions and strongly typed enums.
Next, the right references and the performance gains that can be achieved by using move constructors in addition to copy constructors are discussed.
The new possibilities regarding inheritance with the keywords default, delete, override and final are also covered. The implementation of virtual functions and the need for virtual destructors are discussed as well.
In addition, smart pointers are looked at in detail and unique pointers, shared pointers and weak pointers are treated.
Operator overloading and templates are also on the program, which focuses on variadic templates and perfect forwarding.
The modern C++ Resource Acquisition is Initialization or RAII idiom is discussed with exception handling.
Threads as well as the synchronization between threads are part of the standard and are discussed. This also includes asynchronous calls with promises and futures.
Then specific C++11, C++17 and C++20 features are discussed such as optional types, structured binding declarations and constructions from the world of functional programming such as fold expressions.
The course concludes with an overview of advanced options of the Standard Template Library STL.
This course is intended for developers who are familiar with C++ but who want to delve into the more advanced techniques and possibilities of the language.
To participate in this course knowledge of the basic concepts of C++ and extensive experience with programming in C++ is required. The participants must be familiar with topics such as operator overloading, templates, virtual functions and polymorphism.
The theory is treated on the basis of presentation slides. Illustrative demos clarify the concepts discussed. Theory and practice are interchanged and there is ample opportunity to practice.
Participants receive an official Advanced C++ Programming certificate after successful completion of the course.
Module 1 : Modern C++ Features |
Module 2 : Move Semantics |
Module 3 : Inheritance |
C++11 Features Type Inference Auto Keyword Deduction with decltype Uniform Initialization Initializer Lists Range Based for Loop Null Pointer Constant constexpr Keyword Static Asserts Lambda Functions Strongly Types Enums User Defined Literals Raw String Literals |
Reference Initialization References and Pointers Rvalues and Rvalues in C++ Passing and Returning References Rvalue References Comparing Reference Types Rvalue Reference Usage Assignment Operator Copy Constructor Passing and Returning Objects Passing References to Objects Move Constructor Move Assignment Operator Golden Rule of 5 |
default and delete Keyword Delegating Constructors Inheritance Calling Base Class Constructors Multiple Inheritance Virtual Derivation Polymorphism Virtual Functions Abstract Classes Interfaces in C++ Destructors and Inheritance Virtual Destructors override Specifier final Specifier |
Module 4 : Smart Pointers |
Module 5 : Operator Overloading |
Module 6 : Templates |
unique_ptr Using unique_ptr Specialization for Arrays Replacement for std::auto_ptr std::make_unique shared _ptr Pointer Control Block shared_ptr Destruction Policy shared_ptr Interface Cyclic References weak_ptr |
Syntax Operator Overloading Overloading Numeric Types Overloading Overview Overloading Restrictions When not to Overload Operators as Class Members Operators as Friend Functions Overloading Stream Operators Overloading ostream and istream Overloading Unary Operators Overloading Binary Operators |
Template Functions Template Specialization Template Parameter List Inclusion Compilation Model Class Templates Template Member Functions Template Parameter Scope Templates and Statics Templates and Friends Alias Templates Perfect Forwarding |
Module 7 : Exception Handling |
Module 8 : Multiple Threads |
Module 9 : Synchronization |
Error Conditions and Exceptions Class Objects as Exceptions Parameter Catch Block Catching in Hierarchy Golden Rule Rethrowing Exceptions noexcept Specifier Preventing Resource Leaks RAII Idiom C++ Standard Exceptions User Defined Exceptions Exception Handling Costs |
Multiple Threads Benefits and Drawbacks Thread Class Joining Threads Detaching Threads Thread ID Callables Passing Parameters Pass by Reference Pass by std::ref and std::move Member Function as Thread Thread Local Storage |
Data Corruption Lock Guard Automatic Lock Management Mutex and RAII Recursive Locking Atomic Types Call Once Event Handling Condition Variables Wait and Notify Promises and Futures Asynchronous Tasks |
Module 10 : C++14-17-20 Features |
Module 11 : Standard Template Library |
|
Init-statement for if Selection Initialization Structured Binding Declarations const if Expressions Guaranteed Copy Elision Inline Variables Fold Expressions Optional Type Small String Allocations String View Generic lambdas Aggregate initialization |
STL Core Components Containers, Algorithms and Iterators Vectors, Lists and Dequeues Adapters and Associative Containers Maps and Hash Maps Bitsets STL Iterators Reverse and Iostream iterators Function objects STL Algorithms Predicates and Comparators STL Allocators |