Functions and formatted printing of time and date for RTC8563
Dependencies: mbed
Code Virtual Tier
#include "mbed.h" class Tier { public: virtual void essen() // setze diese Methode auf virtual { printf("Tiere können essen!\n"); } }; class Wolf : public Tier { public: void essen() // Implementierung der virtuellen Methode { printf( "Wölfe können essen!\n"); } }; class Katze : public Tier { public: void essen() // Implementierung der virtuellen Methode { printf( "Katzen können essen!\n"); } }; class HausKatze : public Katze { public: void essen() // Implementierung der virtuellen Methode { printf( "HausKatzen können essen!\n"); } }; int main() { Tier* theArray[5]; Tier* ptr; ptr = new Wolf; theArray[0] = ptr; ptr = new Katze; theArray[1] = ptr; ptr = new Tier; theArray[2] = ptr; ptr = new HausKatze; theArray[3] = ptr; for( int i=0; i < 4; i++) { theArray[i]->essen(); } }
Zeile 6 deklariert die Methode essen()
als virtuell.
In den Zeilen 15, 24, 33 redefiniert die abgeleiteten Klassen die Implementierung von essen()
.
In Zeile 44 bis 51 werden Objekte erzeugt und die Zeiger in das Feld theArray
aufgenommen.
In der for
-Schleife wird die jeweils richtige Methode essen()
(Zeile 54) aufgerufen.
Quote:
Zur Kompilierzeit ist noch nicht bekannt welches Objekt erzeugt und welche essen()
-Methode demzufolge aufgerufen wird. Der Zeiger ptr
wird an sein Objekt erst zur Laufzeit gebunden, was als dynamisches Binden im Gegensatz zum statischen Binden zur Kompilierzeit bezeichnet wird.