C++11, C++14 und C++17 Neuheiten – C++ Kurs mit Visual Studio 2017

Ein Seminar über die Programmiersprache C++ für erfahrene Software-Entwickler, die die aktuellen C++11, C++14 und C++17 Erweiterungen von C++ mit Visual Studio 2017 lernen und professionell einsetzen wollen.

C++11, C++14, C++17 Kurs Training Visual Studio

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.
  • 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 2017 seit Mai 2018 nahezu vollständig aufgenommen. Sie werden in diesem Seminar zusammen mit den Erweiterungen der Entwicklungsumgebung umfassend und kompakt vorgestellt.

Der Dozent Prof. Richard Kaiser hat bereits weit über 100 Firmenseminare über C# und C++ gehalten. Zu seinen Kunden gehören renommierte Weltkonzerne und kleine und mittelständische Unternehmen. Er kennt die Anforderungen der Praxis und geht sowohl in den grundlegenden Konzepten als auch in den Einzelheiten detailliert darauf ein. Durch seine langjährigen Erfahrungen kann er

Inhalt

Die Inhalte (hier ausführlich als pdf) 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

  • 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)

3. Funktionsobjekte und Lambda-Ausdrücke

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

4. Templates und die STL

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

5. STL-Algorithmen und Lambda-Ausdrücke

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

6. 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
  • Parallele Algorithmen.

7. Smart Pointer

  • unique_ptr
  • shared_ptr
  • weak_ptr
  • exception_ptr

8. 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:

C++11, C++14 und C++17 Kurs Teilnehmerbeurteilungen

Weiteres:

Zielgruppe: Erfahrene C++ Programmierer, die den neuesten Stand von C++ (C++11, C++14 und C++17) lernen wollen.

Voraussetzungen: Gute C++-Kenntnisse.

Unterrichtsstil: Vortrag mit vielen Beispielen, die das Wesentliche auf den Punkt bringen. Eine ausgewogene Verbindung von Theorie und Praxis.

  • 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.

Flexibilität: 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.

Manuskript: 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.

Dauer: 3-5 Tage

Kontakt: siehe hier