C++ Level 2 – Effective Modern C++
To take full advantage of C++, we use the latest standard of C++ – aka “Modern C++” – and write tests as a natural ingredient of the software development process. By that we design the code with testability in mind. Beside polymorphism the concept of templates enables you to design and implement generic true re-usable code. The C++ standard library provides a lot of useful functionality without having to “redevelop the wheel”. The latest C++ standard – a.k.a. C++17, and its predecessors C++11 and. C++14 extend the core language and, not least, the standard library. The rvalue references, variadic templates, and lambda functions, to mention some essential core language extensions, and features like multithreading, tuples, general purpose smart pointers, and regular expressions, to bring up some extensions of the standard library.
This training picks up where a basic C++-training would end. The main pervasive theme is memory management.
Furthermore, we will explore many issues and features in C++ like:
- Apply unit testing as natural part of the software development process, and – when necessary to break dependencies – also apply mocking
- Comprehend when polymorphism or templates shall be used in connection with generic solutions
- Understand the necessity of in-depth memory management
- Get an overall overview of the C++ standard library.
- Comprehend the minimal effort required to write exception-safe code
The major objective of this class is that you shall be able to use C++ in a “correct way”.
This training is aimed experienced C++-programmers who want to want to deepen the knowledge in C++.
The course requires basic skill, at least 3 years’ experience, in C++ programming.
During the training you will practice the presented topics in a set of exercises.
We will write unit tests as a natural part of each exercise.
We will use the open and free integrated development environment from Eclipse.
- Keywords Improving the Quality
- Uniform Initialization
- One-method Interfaces – Lambdas
- Range-based Loops
- Memory Management
B. Introduction to Modern Standard Library
- Rvalue References and the Associated Move Support
Impact on Container Components
- General Purpose Smart Pointers
- Unordered Associative Containers
C. Memory Management
- Avoiding Raw Pointers
- Never use
- Never use
- Smart Pointers
- C++ Memory Model