DIPL.-ING. MARTIN WEITZEL, 64380 ROSSDORF, GERMANY

lemken2022W22

Von C zu C++ für Fa. Lemken, 2022 Woche 22
(Dipl.-Ing Martin Weitzel [TBFE] – im Auftrag von Microconsult München)


Aktuelle Download Links
(werden nach Verteilung verschoben zum Stoff des entsprechenden Tages)

https://tbfe.de/data/uploads/infographics/

 


Tag 1

  • C Als Untermenge von C++ ("as close to C as possible, but no closer")
    • strenges "Definition Reference Model" 
    • arithmetische muss per cast in Aufzählungstyp konvertiert werden 
    • `void*` erfordert cast zur Konverrtierung in typisierte Zeiger
  • Verwendung von `const` bei Zeigern (identisch bei C und C++)
    • `const` Zeiger: der Zeiger zeigt immer auf die selbe Stelle im Speicher
    • Zeiger auf `const`: über den Zeiger kann der Speicher nicht verändert werden
    • `const` Zeiger auf `const`: beides obige
  • Referenzen
    • High Level Sicht: "Alias-Name" für existierende Variablen/Objekte
    • Low Level Sicht: mehr oder weniger "andere Syntax" für Zeiger
    • der Natur nach immer einem `const` Zeiger entsprechend
    • `const` auf Referenz angewendet bezieht sich auf den darüber erreichbaren Speicherplatz  
  • Abstrakte Datentypen (ADT) als C `struct`
    • Zusamenfassung von Daten zu einer `struct`
    • sämtliche Zugriffe auf die Elemente der `struct` nur über Funktionen
    • diese erhalten zum `struct`-Zugriff ein Zeiger-Argument
    • in C nur "freiwillig" (direkter Zugriff nach wie vor möglich)
  • Zum C++-Einstieg Anfangskapitel von:
    https://tbfe.de/wetrain/G/Cplusplus_Basic_Topics_2days/
  • Live-Demo Konstruktoren, Getter, Setter, geschachtelte Klassen ...
    https://godbolt.org/z/7T4f1Kz4v
  • ADT als C++-Klasse bietet zusätzlich
    • Referenz-Argument statt Zeiger für Zugriffs-Funktionen ("syntactic sugar")
    • durch Compiler garantierter Zugriffsschutzes (`public`, `private`)
      • davon ausgenommen "Member-Funktionen" und
      • `friend` (nur kurz erwähnt, nicht im Detail besprochen)
  • bei Aufruf von Member-Funktionen steht das betroffene "Objekt" im Vordergrund
    • es ist syntaktisch kein (Funktions-) Parameter der "Operation"
    • sondern steht durch einen Punkt getrennt VOR deren Namen
    • technisch aber kein Unterschied zu ADT-s mit C-Mitteln
  • Live-Demo Konstruktoren, Getter, Setter, geschachtelte Klassen ...
    https://godbolt.org/z/7T4f1Kz4v
  • Auch Operatoren können in C++ "überladen" werden
    • kurze Demo mit operator<< (für Ausgabe) und
    • `operator++` für Aufzählungstyp
    • Vermeidung automatisch generierter Operationen (wird an Tag 2 fortgesetzt)
  • Weitere Themen

Tag 2

  • Mehr zu Klassen
  • Komposition (inkl. private Basisklassen)
  • Vererbung (Einführung)

Tag 3

  • Virtuelle Member-Funktionen
  • Abstrakte Klassen
  • Interfaces

Permanente Links