Unterschied dynamic_cast und static_cast



  • Kann mir einer sagen, was der Unterschied zwischen dynamic_cast<> und static_cast<> ist?

    [ 30.06.2001: Beitrag editiert von: class CMarcus ]



  • Hallo,
    static_cast benutzt man, wenn man schon zur Compilezeit weiß, von welchem Typ ein zu castender Typ ist.
    dynamic_cast ist ein Laufzeitcast. Du benutzt diesen, um in einer Klassenhierarchie "nach unten" zu casten. Also wenn du ein Pointer vom Typ Basisklasse hast hinter dem sich aber ein Objekt einer abgeleiteten Klasse befindet, solltest du mit dem dynamic_cast arbeiten.

    Ein Unterschied liegt auch in der Konsequenz des Casts. Geht ein static_cast schief (es verbirgt sich nicht der Typ hinter einer Variablen den du erwartet hast.) schmiert dir im schlimmsten Fall dein Programm ab.

    Der dynamic_cast gibt angewandt auf einen Pointer im Fehlerfall einen Nullpointer zurück. Angewandt auf eine Referenz wird im Fehlerfall eine Exception (bad_cast) ausgelöst.

    Gruß

    [Diese Nachricht wurde von HumeSikkins am 30-05-2001 editiert.]


Anmelden zum Antworten