Polymorphie kennt ihr ja, Grundzüge von OO;
Im groben geht das ja so
class Base {
public:
virtual void func() {
cout << "Base\n";
}
};
class Derived : public Base {
public:
virtual void func() {
cout << "Derived\n";
}
};
int main() {
Base *p = new Derived();
p->func(); // print "Derived"
}
Ich habe ein Pointer vom Type Base und dennoch wird die Funktion von Derived aufgerufen.
Das hier funktioniert allerdings auch:
int main() {
// We dont need to create the object on the heap with new
// Base *p = new Derived();
// Allocate this object on the stack
Derived d;
Base *p = &d;
p->func(); // prints "Derived" and not "Base"
}
Objekte auf dem Stack werden wesentlich schneller allokiert als auf dem Heap. Das müsste ein deutlichen Geschwindigkeitsvorteil für kleine und kurzlebende Objekte sein.