![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Uebung Klassen - VIRTUELLE METHODEN
Dependencies: mbed
Revision 0:818a912f339d, committed 2019-01-31
- 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