Applied Modern C++






This is the course for experienced C++ programmers curious about the heavily extended C++11 Standard Library, and the design principles in the tradition of the STL and Boost Libraries - policy based design.
As an introduction there is a thorough presentation of the new language features in C++11/14/17. Course focus is on how to use the Standard and the Boost Libraries by understanding policy based design. For a deep dive course in the language C++ itself, see C++ Advanced Programming.
Several labs illustrate the theory by using the classes of the libraries. An incremental lab series builds a multithreaded in-memory relational database with serialization. All produced code is platform independent and all labs are IDE independent.
Utbildningsformer
Classroom
Remote
Längd
4 dagar
Pris
32950 kr
Target Audience
Developers with a good working knowledge of C++.
Course Objectives
- A good knowledge of what is new in C++11 and C++17, both in the language and in the Standard Library.
- A full understanding of Policy Based Design using templates and policy objects.
- Understanding the Observer Pattern, also called signalling, events, etc.
- Understanding and using idioms for resource allocation and smart pointers.
- Knowledge and experience on some of the Boost library classes.
Prerequisites
As from C++ Basic Programming plus experience, or from C++ Advanced Programming.
Kursinnehåll: Applied Modern C++
1. Introduction
2. New Features of C++11/14/17
- auto and decltype
- Structured Binding
- nullptr
- Range Based for
- override and final
- Unicode Support
- Raw Literal Strings
- default and delete
- explicit Converters
- bool Converter
- static_assert
- enum class
- long long
- Exception declarations
- Const and constexpr
- User Defined Literals
3. Uniform Initialization
- In the Class Declaration
- Inter-constructor Calls
- Inherited Constructors
- Curly Bracket Initialization
4. Collections and Algorithms
- Overview Collections and Algorithms
- Template Collections
- The string Class
- Iterators
- Some Boost Classes
5. Templates
- Template Basics
- Parameters
- typedef and using
- Typename Ambiguity
- Specialization and Partial Specialization
- Static Members
- Template Metaprogramming
- Explicit Instantiation and extern
6. Function Objects and Lambdas
- Function Object with Attributes
- Function Object with a Function Pointer
- std::bind()
- Lambda Expressions
7. Policy Objects
- Function Pointer for Callback
- Function Object for Callback
- Lambda for Callback
- Member Policy Objects
- Examples From the Standard Library
8. The Observer Pattern
- The Observer Design Pattern
- Implementations
- A Member Function Object
- std::function class
9. Resource Allocation Designs
- Resource Allocating Classes
- Moving vs Copying
- R-value References
10. Smart Pointers
- Smart Pointer Implementation
- std::auto_ptr
- std::unique_ptr
- std::shared_ptr and std::weak_ptr
- Smart Pointers for Any Resource
- Smart Pointers and Inheritance
11. Streams, Files and Serialization
- The Standard Streams Library
- The Filesystem Library
- Boost Serialization Library
12. Time
- The C Library Time Functions
- The std::chrono namespace
- std::chrono::duration
- std::chrono::time_point
- Clocks
- Displaying Time
- Boost Timers Library
13. Random Numbers
- The C Library Random Functions
- Random Engines
- Random Seeding
- std::random_device
- Distributions
- Creating a Generator
14. Regular Expressions
- Regular Expressions Basics
- std::regex and std::wregex
- Regular Expressions Versions
- Validate a String
- Search a String
- Replace Substrings
15. Threads
- Thread Basics
- std::thread Class
- Synchronization Classes
- Standard Atomic Library