Das Seminar zu C++11 und C++14

Aufbauend auf einem Grundverständnis von C++ wird in diesem Kurs der Standard dieser Programmiersprache ISO/IEC 14882:2011 (vereinfacht ISO C++11 oder C++11) und der erweiterte Standard ISO/IEC 14882:2014 (vereinfacht ISO C++14 oder C++14) vorgestellt. Dabei werden die Änderungen der neuen Standards gegenüber den alten ISO C++98 und ISO C++03 besprochen. Die Neuerungen werden anhand lauffähiger Beispiele im Seminar demonstriert und eingeübt.

Die folgenden Themen werden durchgenommen:

  • Neue Schlüsselwörter für den Umgang mit Typen und Deklarationen:
    • auto
    • decltype
    • using
  • Alignment
    • alignas
    • alignof
  • Das Schlüsselwort nullptr
  • Neue Typen
  • Stark typisierte Enums
  • Enums mit Namensräumen
  • Nicht eingeschränkte Unions
  • Konstante Ausdrücke
  • Das neue Schlüsselwort constexpr
  • Unicode Unterstützung
  • Unicode Typen
  • Prefixes
  • Stringliterale
  • Neue Schlüsselwörter für Klassengestaltung
    • override zum kontrollierten Überschreiben von Methoden
    • final zum Finalisieren von Methoden und Klassen
  • Konstruktorvererbung
  • Konstruktordelegation
  • Neue Initialisierungssyntax
  • Initialisierungssequenzen:
    • Der Container std::initializer_list<T>
    • Konstruktoren mit Wertelisten
  • Die R-Value Referenz
  • Der Move-Konstruktor
  • Kopierbarkeit und Bewegbarkeit von Objekten
  • Der Gebrauch von std::move()
  • Die Anwendung von std::forward<T>() in Templates
  • Type Traits
  • static_assert
  • Die neuen Möglichkeiten der using-Direktive
  • Template aliases
  • Namespace Assoziation
  • Lambdas
  • Nachfolgende Definition von Rückgabetypen
  • Referenzierung des Lambda Aufrufkontextes
  • Kopieren des Lambda Aufrufkontextes
  • Variadic Templates
  • Die Thread-Unterstützung der Standardbibliothek
  • Die Basismechanismen des Threadings
  • Mutexe
  • Synchronisierung über Bedingungsvariablen
  • Atomare Operationen
  • Atomare Typen
  • Lokaler Threadspeicher
  • Threading mit Lambdas (closures)
  • Futures
  • Smart Pointers
    • std::unique_ptr<T>
    • std::shared_ptr<T>
    • std::weak_ptr<T>
  • Neue Container
    • std::forward_list<T>
    • std::unordered_set<T>
    • std::unordered_map<T>
  • Reguläre Ausdrücke

Ergänzungen durch C++14

  • Generische Lambda Ausdrücke
  • Deduktion des Funktionsrückgabetyps
  • Binäre Literale
  • Nummerngruppentrenner in Literalen
  • Das deprecated Attribut
  • Komplexere constexpr Funktionen
  • Variablen Templates

Das Seminar führt theoretisch und praktisch in den neuen Standard ein. Nach den theoretischen Abschnitten werden praktische Übungen eingelegt, sodass die Anwendbarkeit der neuen Sprach- und Bibliotheksbestandteile vom Teilnehmer getestet werden kann.

Die aktuellen Versionen der üblichen Produktivcompiler unterstützen den C++14 Standard meistens. Die beste Unterstützung liefert der Clang C++ Compiler knapp gefolgt vom GNU C++ Compiler. Aber auch Visual C++ bietet ab der Version 2015 eine ausreichende Umsetzung des Standards, um ihn im Seminar einsetzen zu können. Das im Seminar eingesetzte Betriebssystem ist unerheblich. Üblicherweise ist es Linux, Windows oder Mac OS X.

Zuletzt geändert am 10.07.2021