Programmieren mit C++11 bis C++17


Beschreibung

C++ hat sich seit 2011 teils massiv verändert. Es gab drei neue Sprachstandards, 11, 14 und 17. Ein vierter ist mit C++20 bereits auf dem Weg.

Die neuen Elemente erleichtern es uns oft weniger und dafür korrekteren Code zu schreiben. Mit constexpr hat die Sprache eine einzigartige Möglichkeit Dinge bereits zur Compile-Zeit zu erledigen. Unser Bonus: weniger RAM und ROM Verbrauch sowie ein Zeitgewinn.

In diesem Seminar erfahren Sie, wie die neuen Standards Sie unterstützen, schnelleren und robusteren Code zu schreiben.

Inhalt

Nach dem langen Stillstand der Sprache, wurde sie seit 2011 kontinuierlich mit neuen Standards erweitert. Dies bringt wertvolle neue Eigenschaften in C++ die u.a. für den Einsatz in eingebetteten Systemen interessant sind. Die Teilnehmer erhalten das Wissen, wie Sie neue Sprachmittel wie constexpr einsetzen um Code-Größe oder Performance zu optimieren.

Wir beginnen mit neuen Sprachmitteln wie auto, override und der uniformen Initialisierung. Mit diesem Wissen schauen wir weiter in Neuerungen wie constexpr. Selbstverständlich werden auch Lambdas besprochen, eines der lange vermissten Elemente.

Zur Freude von allen begeisterten Template Nutzern schauen wir auf die Neuerung in C++11: variadische Templates.

Ebenso behandeln wir Move-Semantik und analysieren, wann diese uns einen Gewinn bringt. Hier sprechen wir darüber was bei ihrem Einsatz zu beachten ist und in welchen Situationen das Feature vom Compiler deaktiviert wird.

Zum Abschluss schauen wir uns noch einige ausgewählte Neuerungen in der STL an. Sehr interessant für viele C++ Programmierer sind hier die schlauen Zeiger (smart pointer). Aber auch Container wie std::tuple oder std::vector werden behandelt.

Nach dem Seminar haben Teilnehmende ein klares Verständnis was die neunen Standards bringen. Sie können bewusst Feature aus den neuen Sprachstandards für eine Projekt auswählen und sicher einsetzen.

Agenda

  • Sauberer und moderner C++ Code
  • Uniforme Initialisierung:
    • Initialisierung mit geschweiften Klammern
    • std::initializer_list
  • Neue Elemente:
    • auto
    • Range-based for-Schleifen
    • Literal Operator
    • String Literale
    • class enum
    • nullptr
    • override
    • final
    • =default, =delete
    • In-Class Initialisierung
    • Geerbte Konstruktoren
  • Dinge zur Compile-Zeit erledigen:
    • constexpr
    • static_assert
    • constexpr if
  • Lambdas
  • Move Semantik:
    • Rvalue Referenzen
    • std::move
    • Prefect Forwarding
  • Template-Neuerungen:
    • Variadische Templates
    • Template Alias mit using
    • Fold Expressions
    • Class Template Argument Deduction
  • Structured Bindings
  • Ausgewählte Updates der STL:
    • Schlaue Zeiger
    • std::array
    • std::tuple
    • Type-Traits
    • Die Zeit im Griff mit chrono
    • Ein Blick in den algorithm Header