Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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.