Uebung Klassen - VIRTUELLE METHODEN

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
Powers
Date:
Thu Jan 31 21:27:46 2019 +0000
Commit message:
Uebung zu Klassen; Virtuelle Methoden erklaert

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Jan 31 21:27:46 2019 +0000
@@ -0,0 +1,51 @@
+#include "mbed.h"
+
+// Uebung zu VIRTUELLE METHODEN
+// SIEHE KOMMENTARE IM CODE
+// Ausgabe SERIAL
+
+
+// Virtuelle Methoden werden benötigt wenn Methoden der Basis Klasse von
+// Methoden der abgeleiteten Klassen überschrieben werden. Und man später
+// doch darauf zugreifen möchte Die Adressierung
+// von einer virtuellen Methode wird erst zur Laufzeit über die V-Tabelle erledigt
+// so kann man sie später umadressieren.
+
+class BASE
+{
+public:
+    BASE(int x) {}
+    virtual void test(void)         // Virtuelle Methoden werden mit dem Prefix virtual gekennzeichnet
+    {
+        printf("Klasse BASE \n");
+    }
+};
+
+class LIGHT : public BASE
+{
+public:
+    LIGHT(int x):BASE(x) {}
+    virtual void test(void)
+    {
+        printf("Klasse LIGHT \n");
+    }
+};
+
+// Man erstellt einen Pointer der auf die Basisklasse zeigt und ändert dann 
+// während der Laufzeit seine Adresse, einmal Basisklasse und einem Vererbte Klasse
+// So kann dann die Methode ueber den Pointer aufgerufen werden, dessen Klassenadresse 
+// im Pointer gespeichert ist 
+
+BASE *pointer;
+BASE base(3);
+LIGHT light(7);
+
+int main()
+{
+    pointer = &base;        // Adresse vom Objekt der Basisklasse
+    pointer->test();        // Aufruf der Methode test() aus der Basisklasse
+    pointer = &light;       // Adresse vom Objekt der Vererbten Klasse
+    pointer->test();        // Aufruf der Methode test() aus der Vererbten Klasse
+
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu Jan 31 21:27:46 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/3a7713b1edbc
\ No newline at end of file