Inhalt „C++11, C++14, C++17 und C++20 Erweiterungen“
Ein Seminar über die Programmiersprache C++. Für erfahrene C++-Programmierer, die die aktuellen C++11, C++14, C++17 und C++20 Erweiterungen für den professionellen Einsatz lernen wollen und die eine fundierte Orientierung in der Vielfalt dieser Spracherweiterungen suchen.
C++ wurde in den letzten Jahren stark erweitert (C++11, C++14, C++17 und C++20). Der neue Standard wird als C++20 bezeichnet und macht die Programmierung mit C++ einfacher, sicherer, eleganter und effizienter. Zu den Erweiterungen gehören
- neue Sprachelemente wie Initialisiererlisten (die Initialisierungen vereinfachen und auf Typsicherheit prüfen), Lambda-Ausdrücke (die callback-Funktionen und die Verwendung von STL-Algorithmen vereinfachen), Vereinfachungen bei der Definition von Klassen, sicherere Konversionen, Move-Semantik (die schneller ist) usw.
- neue Klassen der Standardbibliothek (STL) wie schnellere Hash-Container, smart pointer (die oft Speicherlecks vermeiden), Multithreading-Klassen (für die parallele Ausführung von Threads), Unicode-Strings usw.
- parallele Algorithmen der Standardbibliothek, die allein durch die Angabe eines weiteren Arguments deutlich schneller sind als vor C++17.
Diese Erweiterungen sind in Visual Studio 2022 vollständig aufgenommen und werden in diesem Seminar umfassend und kompakt vorgestellt. Zusammen mit den neuen Sprachelementen werden auch die C++ Core Guidelines mit „best practises“ für Sicherheit, Performanz und Wartbarkeit vorgestellt.
Die Inhalte dieses Kurses können an die Wünsche der Teilnehmer angepasst werden.
1. Neues in der Entwicklungsumgebung
- Neuerungen im Editor, Refactoring, Debugger, Projektmappen-Explorer usw.
- Der Visual Studio C++ Core Guideline Checker
2. C++-Erweiterungen: core features
- Compiler feature test Makros
- neue Ganzzahl-Datentypen, Trennzeichen und binäre Literale
- Typ-Inferenz: Implizite Typzuweisungen mit auto und decltype
- typsichere Intitialisierung mit Initialisierungslisten
- inline Variablen
- Variablendefinitionen und constexpr in if und switch
- Das Nullzeiger-Literal nullptr
- typsichere Aufzählungstypen (enum class)
- constexpr Werte und Funktionen
- Die bereichsbasierte (range-based) for-Schleife
- Erweiterungen für Klassen
- virtuelle Funktionen mit override
- final, erweiterte friend-Deklarationen
- =delete, =default
- Delegierende Konstruktoren und implizit erzeugte Konstruktoren
- Explizite Konstruktoren und Konversionsfunktionen
- Initialisierer für nicht statische Datenelemente
- rule of zero
- überladene Operatoren mit dem Operator <=>
- std::array vs C-Arrays
- Explizite Konstruktoren und Konversionsfunktionen
- Move-Semantik
- R-Wert Referenzen
- In der Standardbibliothek
- In eigene Klassen implementieren
- Compile-time assert: static_assert
- Attribute
- Module
3. Erweiterungen für Strings
- Literale des Typs std::string und raw string Literale
- String-Konversionen (std::to_string, std::format usw.)
- std::string_view
- Unicode-strings
- reguläre Ausdrücke
4. Exception-Handling
- Exception-safety
- noexcept
5. Erweiterungen der STL
- move Semantik in der STL
- neue Algorithmen
- Container mit polymorphen Allokatoren
- ungeordnete assoziative Container
- Tupel, std::variant
- Filesystem
6. Funktionsobjekte und Lambda-Ausdrücke
- Der Aufrufoperator (), Prädikate und arithmetische Funktionsobjekte
- callback-Funktionen
- Der function-wrapper std::function
- Lambda-Ausdrücke
7. Templates und die STL
- Generische Funktionen und Klassen: Funktions-und Klassen-Templates.
- Type Traits
- Variadische Templates und fold-Ausdrücke
- Concepts
8. STL-Algorithmen und Lambda-Ausdrücke
- Die verschiedenen Arten von Iteratoren
- STL-Algorithmen mit Lambda-Ausdrücken
9. Smart Pointer
- unique_ptr
- shared_ptr
- weak_ptr
- exception_ptr
10. Uhrzeiten und Kalenderdaten mit chrono
- Uhren (system_clock und steady_clock)
- Zeiteinheiten (Zeitdauern) und Zeitpunkte
11. Multithreading
- Threads mit thread, jthread und async starten
- Exceptions in Threads
- kritische Abschnitte
- atomare Datentypen
- Futures und async
- Bedingungsvariablen
Über „C++11, C++14, C++17“
Zielgruppe
Erfahrene C++ Programmierer, die den neuesten Stand von C++ (C++11, C++14, C++17 und C++20) lernen wollen. Die Teilnehmer sollten gute C++-Kenntnisse haben.
Unterrichtsstil
Vortrag mit vielen Beispielen, die das Wesentliche auf den Punkt bringen. Dabei wird auf einen ausgewogenes Verhältnis von Theorie und Praxis geachtet.
- Zu Beginn eines neuen Themas wird zunächst ein Überblick über die Einsatzmöglichkeiten, Grundideen und die Syntax gegeben. Diese werden an sorgfältig ausgewählten und bewährten Beispielen illustriert.
- Das Verständnis wird oft durch den Vergleich ähnlicher (auch älterer) Sprachelemente und ihrer Vor- und Nachteile vertieft. Dabei werden oft „best practises“ empfohlen.
- Falls die Teilnehmer ihr Wissen selbständig vertiefen wollen: Das Manuskript enthält zahlreiche praxisnahe Übungsaufgaben. Auf Wunsch können nach vorheriger Absprache auch Aufgaben aus der Arbeit der Seminarteilnehmer behandelt werden.
Falls sich im Lauf des Seminars zeigt, dass Grundlagen bei den Teilnehmern fehlen oder weitere Themen gewünscht werden, kann die Agenda auch noch während des Seminars an die Wünsche der Teilnehmer angepasst werden.
Schulungsunterlagen
Ausführliche und detaillierte Schulungsunterlagen (ca. 200 Seiten) – Vollständiger Text, keine Powerpoint Folien, die nur Stichworte enthalten. Deshalb können die Kursunterlagen auch als Referenz bei der Arbeit verwendet werden.
Ort und Zeit
Dieses Seminar wird als Firmenseminar (inhouse) angeboten. Die Durchführung als Präsenzseminar wird bevorzugt, ist aber auch als Online-Seminar möglich. Termine nach Vereinbarung.
Dauer: 3-5 Tage
Öffentliche Seminare von Prof. Richard Kaiser finden Sie bei der Technischen Akademie Esslingen.
Beurteilungen durch Teilnehmer:
C++11/C++14/C++17 März 2019 | 1 (sehr gut) | 2 | 3 | 4 | 5 |
Gesamteindruck | xxxxxx | xx | |||
Lern- und Arbeitsatmosphäre | xxxxxxx | x | |||
Kursunterlagen | xxxxxx | x | x | ||
Fachkompetenz des Dozenten | xxxxxxx | x |
Der Dozent:
Prof. Richard Kaiser führt seit vielen Jahren Seminare für Firmen durch, vor allem über Software-Entwicklung und die Programmiersprachen C#, C++ und C. Er kennt die Anforderungen der Praxis und geht sowohl in den grundlegenden Konzepten als auch in den Einzelheiten detailliert darauf ein. Zu seinen Kunden gehören renommierte Weltkonzerne und kleine und mittelständische Unternehmen. Er ist der Verfasser mehrerer Bücher über C++, zuletzt „C++ mit Visual Studio 2019“. Er war viele Jahre Mitglied im DIN Normierungsausschuss Informationstechnik NI-22.