Möchten Sie mit Ihrem Team teilnehmen? Profitieren Sie von unseren Gruppenrabatten! Schreiben Sie an events@dpunkt.de

Simpler, schneller, stärker: Typen in Modernem C++

C++ hat Datentypen wie `int` mit deren impliziter Konvertierung und Vielzahl an Operatoren von C übernommen, was teilweise zu fehlerhaften Berechnungen führt oder überraschende Effekte hat. Allerdings bietet C++ mit der "Zero-Overhead Abstraction" die Möglichkeit, effiziente Datentypen selbst zu gestalten.

Dieser Vortrag stellt das "Whole Value Pattern" und seine effektive Anwendung in modernem C++ vor. Er zeigt, wie man aussagekräftige Datentypen für die Anwendungsdomäne ("Strong Typing") einfach umsetzen kann, die vergleichbar effizienten Code wie die eingebauten Datentypen erlauben, ohne deren Risiken zu besitzen. Damit Code mit Domänentypen lesbar bleibt, ist es wichtig, sinnvolle Operatoren zu unterstützen. Für Vergleichsoperatoren bietet C++20 deutlich weniger Implementierungsaufwand als die Vorgängerversionen.

Aber wie erhält man eine sinnvolle Auswahl an anderen Operatoren, ohne selbst immer wieder eigene Operatorfunktionen definieren zu müssen?
C++17 "Structured Bindings" bieten hier eine Möglichkeit, per Mix-in-Klassen passende Operatorenfunktionen bereit zu stellen, ohne diese immer wieder kodieren zu müssen.

Lernziele

  • Vorteile von Domänentypen (Strong Types) gegenüber der Nutzung der eingebauten Datentypen kennenlernen
  • Übersicht, wie diese Domänentypen automatisch mit den Vergleichsoperatoren funktionieren, durch die C++20 Mechanismen des 3-Wege Vergleichsoperators und der automatischen Generierung von Vergleichsoperatoren
  • Für weitere Operatoren wird vorgestellt, wie diese mittels Mix-in-Klassen generisch und bedarfsgerecht bereit gestellt werden können und wie das PSsst-Framework dazu genutzt werden kann

  • Speaker

     

    Peter Sommerlad
    Peter Sommerlad war bis Anfang 2020 Professor für Informatik und leitete das IFS Institut für Software an der HSR Hochschule für Technik Rapperswil/CH. Heute ist er freiberuflicher Berater, Coach und Trainer für C++ und Softwareengineering. Er ist Mitglied in den ISO-Arbeitsgruppen WG21 (C++) und WG23 (Vulnerabilities) und beteiligt sich aktiv an der Gestaltung von MISRA-C++. Außerdem hat er die C++-Arbeitsgruppe von AUTOSAR beraten.

    betterCode-Newsletter

    Sie möchten über die betterCode
    auf dem Laufenden gehalten werden?

     

    Anmelden