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.


All wikipages