Virtuelle Ableitung

Hallo,

kann mir jemand in kurzen Worten erklären was man unter virtueller Ableitung versteht? Hab morgen Prüfung… :wink:

Danke

kann mir jemand in kurzen Worten erklären was man unter
virtueller Ableitung versteht? Hab morgen Prüfung… :wink:

Danke

hallo F22Raptor,

Diese Formulierung ist mir so nicht geläufig, aber was Du damit wohl meinst, ist, daß eine Klasse „Erbt“ von der anderen „Basis“ abgeleitet wird, man sagt auch, sie erbt von „Basis“, z.B. so:

class Basis
 {
 Basis() {}
 virtual ~Basis() {}
 virtual void funk(int in, float fl) {}
 };

class Erbt : public Basis
 {
 Erbt() {}
 virtual ~Erbt() {}
 // "virtual" kannst Du hier auch weglassen
 virtual void funk(int in, float fl);
 };

void Erbt::funk(int in, float fl)
 {
 cout funk();
 return 0;
 }

Das „virtual“ braucht es notwendig in der Basisklasse, damit beim Aufruf „pBas->funk()“ auch wirklich die überschriebene Funktion von „class Erbt“ aufgerufen wird, nicht die von der Basisklasse.
Du brauchst dafür das „virtual“ in Verbindung mit dem Basisklassen-Zeiger (hier *pBas).
Je nachdem, was zur Laufzeit dann alllokiert wird (Erbt oder andere) wird die richtige Funktion dann zugeordnet, „dynamische Bindung“ nennt man das, oder „late binding“.
Ah ja: die Argumente der Funktionen muessen dann bei beiden gleich sein, hier int und float.
Alles klaro?

lg
Martin B