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 an intermediate C++-training would end. The main pervasive theme is testability
Furthermore, we will explore many issues and features in C++ like:
• Writing code with testability in mind
• Understand the importance of thorough memory management
• Write generic code using templates
• Get enough acquainted with the C++ standard library that “no new wheels have to be invented”
• Reasoning about sound and robust APIs where, for instance, raw memory shall never be exposed.
• 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”. We summarize the training by reasoning about and concluding how a “good” API shall look like.
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