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/
- C++ FAQ Proper Inheiritance
https://isocpp.org/wiki/faq/proper-inheritance - Source-Code Demo-Projekte als ZIP-Files via Google Drive:
https://drive.google.com/drive/folders/1QJfi8PFrwp_hZD6xAFbJIb3oKDjLS6xl?usp=sharing
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
- C++ "scoped enumerations" (`enum class`)
- Schleife über Aufählungstyp mit `std::initializer_list`
https://godbolt.org/z/roYfobsoz - systematische "Code-Generierung" Präprozessor Mittel
https://godbolt.org/z/EMM6ncsfP
Tag 2
- Mehr zu Klassen
- Komposition (inkl. private Basisklassen)
- Vererbung (Einführung)
Tag 3
- Virtuelle Member-Funktionen
- Abstrakte Klassen
- Interfaces
Permanente Links
- Source-Code Demo-Projekte als ZIP-Files via Google Drive:
https://drive.google.com/drive/folders/1QJfi8PFrwp_hZD6xAFbJIb3oKDjLS6xl?usp=sharing - …