Wenn Sie hatten die folgenden:Wie funktioniert dynamic_cast?
class Animal{};
class Bird : public Animal{};
class Dog : public Animal{};
class Penguin : public Bird{};
class Poodle : public Dog{};
Hat dynamic_cast nur zu überprüfen, ob eine Klasse eine abgeleitete Klasse eines anderen ist, oder wenn eine Klasse ist eine Basisklasse von anderen? Also, wenn ich hatte:
Bird* bird;
Animal* animal;
bird = dynamic_cast<Animal*>(bird);
animal = dynamic_cast<Bird*>(animal);
bird
weist darauf jetzt auf eine Animal
Klasse, so dass ich bird->some_function();
verwenden kann, und es wird die Funktion in Animal
nennen? Und animal
zeigt jetzt auf eine Bird
Klasse, also kann ich animal->some_function();
tun und es wird some_function();
in Bird
anrufen?
Ich habe versucht herauszufinden, wie die dynamische_cast funktioniert, und die Ressourcen, die ich online gefunden habe, waren nicht die hilfreichsten. Wenn jemand andere Einblicke in die Funktionalität von dynamic_cast und einige Fälle, in denen es nützlich wäre, anbieten könnte, würde ich es sehr zu schätzen wissen.
Sie werfen falsch. "Vogel" und "Tier" sind bereits Hinweise, aber Sie nehmen ihre Adressen. –
@Olaf. Danke für deine Bearbeitung. Vielleicht solltest du deinen Kommentar entfernen. –