HemSök efter kurserApplied Modern C++

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.


4 dagar

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.


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