C++11, C++14 und C++17 mit dem GNU GCC C++ Compiler

Ein C++-Seminar für Software-Entwickler, die C++ mit den aktuellen Erweiterungen des GNU GCC C++ Compilers professionell einsetzen wollen. Von Prof. Richard Kaiser

C++ wurde in den letzten Jahren stark erweitert (C++11, C++14 und C++17 ). Der neue Standard wird als C++17 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.

Diese Erweiterungen sind im C++-Compiler der Gnu Compiler Collection (GCC) gcc 7 nahezu vollständig aufgenommen. Sie werden in diesem Seminar umfassend und kompakt vorgestellt.

 

Inhalt

1. C++-Erweiterungen: core features

  • Die Datentypen long long und unsigned long long
  • Das Nullzeiger-Literal nullptr
  • Binäre Literale und Trennzeichen
  • Stark typisierte Aufzählungstypen (enums)
  • inline Variablen
  • constexpr Werte und Funktionen
  • Variablendefinitionen und constexpr in if und switch
  • Typ-Inferenz: Implizite Typzuweisungen mit auto und decltype
  • Die bereichsbasierte (range-based) for-Schleife
  • Initialisiererlisten – Typsichere und einheitliche Intitialisierung
  • Explizite Konstruktoren und Konversionsfunktionen
  • Move-Semantik
    • R-Wert Referenzen
    • In der Standardbibliothek
    • In eigene Klassen implementieren
  • Compile-time assert: static_assert
  • Erweiterungen für Klassen
    • override, final, erweiterte friend-Deklarationen
    • Die Angaben =delete und =default
    • Delegierende Konstruktoren und implizit erzeugte Konstruktoren
    • Initialisierer für nicht statische Datenelemente
  • Attribute
  • Compiler Feature Tests
  • Makros mit … (Variadic Macros)

2. Funktionsobjekte und Lambda-Ausdrücke

  • Der Aufrufoperator (), Prädikate und arithmetische Funktionsobjekte
  • Binder, Funktionsadapter
  • Der function-wrapper std::function
  • Lambda-Ausdrücke

3. Templates und die STL

  • Generische Funktionen: Funktions-Templates
  • Generische Klassen: Klassen-Templates
  • Type Traits
  • Typ-Inferenz in Templates mit decltype

4. STL-Algorithmen und Lambda-Ausdrücke

  • Die verschiedenen Arten von Iteratoren
  • STL-Algorithmen mit Lambda-Ausdrücken einsetzen

5. Erweiterungen der Standardbibliothek (STL)

  • Move-Semantik und Optimierung auf der Basis von type traits
  • Erweiterungen für Strings
  • Die Stringklassen u16string und u32string
  • Konversionsfunktionen
  • „raw string“ Literale, Unicode String Literale
  • string_view
  • Erweiterungen für Container-Klassen
  • Iteratoren, Speicherverwaltung bei Vektoren, emplace für Container
  • Erweiterungen für Stream-Klassen
  • Ungeordnete Assoziative Container (Hash-Container)
  • Reguläre Ausdrücke
  • Fixed Size Array Container
  • Tupel
  • Zufallszahlen
  • Neue Algorithmen
  • Die Exception-Klasse system_error
  • Filesystem

6. Smart Pointer

  • unique_ptr
  • shared_ptr
  • weak_ptr
  • exception_ptr

7. Multithreading

  • Die Klasse thread
  • Funktionen und Lambda-Ausdrücke als Threads starten
  • Exceptions in Threads
  • Eine Exception mit promise weitergeben
  • Kritische Abschnitte, Mutexe und lock_guard
  • Atomare Datentypen
  • Deadlocks vermeiden
  • Thread-lokale Variablen
  • Futures, Promises und async
  • Bedingungsvariablen zur Synchronisation von Threads
Beurteilungen von Teilnehmern dieses Seminars:

Organisatorisches:

Zielgruppe: Erfahrene C++ Programmierer, die den neuesten Stand von C++ lernen wollen.

Voraussetzungen: Gute C++-Kenntnisse

Methodik: Vortrag mit vielen Übungen, in denen die Teilnehmer praxisnahe Programme entwickeln.

Manuskript: Ausführliche und detaillierte Schulungsunterlagen (ca. 200 Seiten)

Ort und Zeit: Dieses Seminar wird als Firmenseminar (inhouse) angeboten.

Dauer: 3-5 Tage

Dozent: Prof. Richard Kaiser führt seit vielen Jahren Seminare für Firmen durch, vor allem über Software-Entwicklung und die Programmiersprachen C#/C++/C. Zu seinen Kunden gehören renommierte Weltkonzerne und kleine und mittelständische Unternehmen. Er ist der Verfasser der Bücher „C++ mit Visual Studio 2017“ und „C++ mit Microsoft Visual C++ 2008“. Er war viele Jahre Mitglied im DIN Normierungsausschuss Informationstechnik NI-22.

Öffentliche Seminare von Prof. Kaiser finden Sie bei der Technischen Akademie Esslingen.

Beurteilungen der Seminare durch die Teilnehmer finden Sie hier.

Kontakt: Richard Kaiser, Schwärzlocher Straße 53, 72070 Tübingen, .img, .img@.img