Functions and formatted printing of time and date for RTC8563

Dependencies:   mbed

You are viewing an older revision! See the latest version

Virtuelle Methoden

Wenn ein Zeiger auf ein Objekt der Basisklasse einem Zeiger auf ein Objekt der abgeleiteten Klasse zugewiesen wird, werden immer die Methoden der Basisklasse über den Zeiger aufgerufen, da sie bereits zur Kompilierungszeit feststehen. Soll jedoch die gleichnamigen Methoden der abgeleiteten Klasse aufgerufen werden, ist die Basismethode als sogenannte virtuelle Methode zu deklarieren. Mit dieser Änderung werden die Methoden erst zur Laufzeit des Programms an den Zeiger gebunden. Virtuelle Methoden sind Methoden, die mit dem Schlüsselwort virtual definiert werden.

class Date : public RTC //, public Base
{
public:
    virtual string GetDay(uint8_t value);
};

class DateString : public Date
{
    virtual string GetDay(uint8_t value);
};

Die Adressen der virtuellen Methoden stehen in einer Tabelle, die mit vtable oder VMT (Virtual Method Table) bezeichnet wird.

/media/uploads/bulmecisco/vmt.jpg

In dieser werden zur Laufzeit eines Programms die Anfangsadressen der zugehörigen aktuellen Methoden gespeichert. Obwohl alle Methoden (der Basisklasse als auch der abgeleiteten Klassen) bereits im Speicher vorhanden sind, werden sie erst durch den Eintrag der Anfangsadresse in die Virtual Method Table an die Instanz gebunden.


All wikipages