This advanced C++ training is a course on software development with the C++ programming language. The focus of the training are the essential C++ software development principles, concepts, idioms, and best practices, which enable programmers to create professional, high-quality code. The course will give insight into the different aspects of C++ (object-oriented programming, functional programming, generic programming) and will teach guidelines to develop mature, robust, maintainable, and efficient C++ code.
Agenda
Day 1
- Concepts and the STL
- Overview of the STL
- STL Iterators
- STL Algorithms
- STL Containers
Day 2
- Class Design (I)
- Compiler Generated Functions
- Copy Elision
- Object Lifetimes
- RAII
- Move Semantics
Day 3
- Class Design (II)
- Proper Handling of Member Data
- Maintainability of Classes
- Const Correctness
- Dynamic Polymorphism
- Inheritance: The Good Parts
- Inheritance: The Bad Parts
- Value Semantics: From Pointers to Values
- Public Inheritance
- Surprises in Object Hierarchies
After the course, the participants...
- will have gained knowledge about fundamental C++ programming concepts and idioms
- will benefit from both object-oriented and functional programming
- will have a detailed understanding of template-based programming
- will be able to properly design classes and class interfaces
- will avoid the usual pitfalls in the context of inheritance
- will comprehend the advantages of value-based design
- will understand the virtue of clean code.
Prerequisites
- At least one year of experience with the language is needed. This includes a good understanding of the basic mechanics (header files, source files, compilation), good knowledge of the syntax of C++, and some experience with templates and inheritance.
- It is also beneficial to know the most common classes from the standard library (e.g. std::vector, std::unique_ptr, ... ).
- For the programming tasks, it is expect that all participants have a working C++ environment at hand. All operating systems (Windows, Linux, MacOS, ...), all IDEs or editors (Visual Studio, CLion, emacs, vi, ...), and all compilers (GCC, Clang, MSVC, ...) capable of at least C++14 can be used.