EHFlow2020-01
https://godbolt.org/z/M3MDm_
Extras sortiert nach Kapiteln der Schulungsunterlage:
Zu Kapitel 1: Einleitung (allgemeine Links)
- Godgolt Compiler Explorer
- C++ FAQ
Zu Kapitel 2: Namespaces
- …
Zu Kapitel 3: Inheritance (incl. Multiple Inheritance / Interfaces)
- Speicher-Mehrverbrauch durch virtuelle Basisklasse:
https://godbolt.org/z/ongWJd - Vergleich "disjoint" vs. "overlapping" im Beispiel `Counter`:
https://godbolt.org/z/dyXVuo - Wie zuvor (nächste Ausbaustufe)
https://godbolt.org/z/M8zuJS - …
Zu Kapilel 4: Exceptions
- InfoGraphic: ExceptionBasics
- InfoGraphic: ExceptionDetails
- Startversion des `RingBuffer`:
https://godbolt.org/z/wuNoFa - Erste Ausbaustufe (`get`- / `put`-Fehleranzeige über Rückgabewert):
https://godbolt.org/z/RwBj-N - Zweite Ausbaustufe (`get`- / `put`-Fehleranzeige mit Exceptions):
https://godbolt.org/z/QNF7Fx - Dritte Auste baustufe (Makro `T` zum Test der erwarteten Exception):
https://godbolt.org/z/qmcxbD
Zu Kapitel 5: Dynamic Memory
- InfoGraphic: SmartPointers
Zu Kapitel 6: State Machines…
-
Eweiterung der folgenden beiden Statemachines Decomment_FSM
- implementiert mit Kontrollstruktur
https://godbolt.org/z/yhFAmd - implementiert mit Tabelle
https://godbolt.org/z/tfxsM3
- implementiert mit Kontrollstruktur
-
um die Zustände `ChrLiteral` und `QChrLiteral` (prinzpiell ganz ähnlich zu den bereits vorhandenen Zuständen (`QStrLiteral` und `QStrLiteral`)
-
`ChrLiteral wird durch ein einfaches Anführungszeichen (') betreten und verlassen
- `QChrLiteral` wird (von `ChrLiteral` aus) durch einen Gegenschrägstrich betreten und durch jedes beliebiges Folgezeichen wieder verlassen
Zu Kapitel 7: Standard Strings
- …
Zu Kapitel 8: Standard I/O-Streams
- …
Zu Kapitel 9: Dynamic Polymorphism / RTTI
- InfoGraphic: Type-based branching
- RTTI gestattet die Prüfung des Laufzeit-Typs eines Zeigers oder einer Referenz:
- `dynamic_cast` prüft "unscharf":
- Kann unter Berücksichtigung des LSP der Compilezeit-Typ `Base` verwendet werden wie ein `Derived`?
- Dies ist auch dann der Fall, wenn der Laufzeit-Typ exackt ein `Derived` ist sondern auch dann, wenn dieser von `Derived` abgeleitet ist.
- `typeid` prüft exakt:
- Sollen abgeleitete Klassen eingeschlossen werden, müssen diese bei der Prüfung explizit berücksichtigt werden.
- `dynamic_cast` prüft "unscharf":
Zu Kapitel 10: Templates
- https://godbolt.org/z/ep6Qqs
-
Zu Kapitel 11: Standard Template Library
- InfoGraphic: STL-SequenceContainers
- InfoGraphic: STL-AssociativeContainers
- InfoGraphic: STL-IteratorUsages
- InfoGraphic: STL-IteratorCategories
- InfoGraphic: STL-IteratorDetails
Zu Kapitel 12: Multi-Threading
- …
Zu Kapitel 13: Hardware Abstraction
- Architektur-Beispiel zur Vermeidung bi-direktionaler Abhängigkeiten
https://godbolt.org/z/RRrU5Q - Variante mit Referenz auf I_C_AE_2 in C_AE_1:
https://godbolt.org/z/4go2QXFragen zur abschließen den Lösung
(Die Antworten finden sich vor allem im Source-Code der Lösung, teilweise aber auch bereits in der Aufgabenstellung, falls Sie diese zuerst bearbeiten wollen oder bereits bearbeitet haben.)
Welche Klasse implementiert das Callback-Interface, über das der Sekundentakt an die registrierten Clocks weitergereicht wird?
-
Gehen Sie in die Musterlösung und beantworten Sie unter Zuhilfenahme der Aufgabenbeschreibung die folgenden Fragen:
- Wer sehr fleißig sein will und noch viel Zeit zur Verfügung hat, kann dazu ggf. auch eine Handskizze dazu anfertigen. Berücksichtigen Sie dabei
- dass ein Zeiger auf ein Interface immer auf ein real vorhandenes Objekt einer Klasse zeigt, welches dieses Interface implemeniert;
- dass eine Klasse, die virtuelle Member-Funktionen hat, einen Zeiger enthält, welcher auf eine Einsprung-Tabelle (VMT) zeigt;
- dass die VMT wiederum (nur) die Adressen im Maschinen-Code enthält, auf die der Program-Counter zu Beginn dieser Funktion zeigen muss. (Zuvor müssen noch wichtigeCPU-Register gesichert werden, wozu neber dem vorherigen Wert des Program-Counters auch der aktuelle Stack-Pointer gehört, damit bei Rückkehr aus der Funktion hinter deren Aufruf fortgesetzt werden kann.)
-
Nicht verwendete / noch nicht einsortierte Godbolt Bespiele:
https://godbolt.org/z/F7Z-xf
https://godbolt.org/z/2Ya95S
https://godbolt.org/z/gcaVYm
https://godbolt.org/z/8ebz6Z