type checking



  • Hallo. Kann mir mal jemand erklären, was es mit dem type checking in C++ auf sich hat und warum das gegenüber C verbessert ist?
    Noch besser: Eine URL zu detaillierten Informationen. Kurz gegoogelt hab ich schon.Vielleicht kennt jemand eine passsende seite.



  • Du meinst jetzt sicherlich die strengere Typenprüfung des Compilers, nicht die RunTimeTypeInfo(RTTI).

    In C war es ohne weiteres möglich, dem Wert eines void-Pointers einem typisierten Pointer zuzuweisen:

    float f;
    void *vp = &f;
    
    int *i = vp; 
    /* Compiler hat nix dagegen, aber es ein logischer Fehler*/
    

    C++ macht das nicht mit. Man muss darauf bestehen:

    int *i = reinterpret_cast<int*>(vp);
    

    Obwohl der GCC per Default das auch so durchgehen lässt 😞

    Außerdem brauchte man in älteren C keine Prototypen.
    Man konnte Funktionen auch ohne Deklarationen aufrufen, niemand hat sich beschwert. Und dann traten Fehler auf, weil die falschen Parametertypen übergeben wurden.



  • static_cast reicht aber, reinterpret_cast ist hier wie mit kanonen auf spatzen zu schiessen.



  • Shade Of Mine schrieb:

    static_cast reicht aber, reinterpret_cast ist hier wie mit kanonen auf spatzen zu schiessen.

    Hehe, erwischt.
    Die C++ Cast benutze ich eigentlich gar net, wollte bloß das Gejaule ersparen.


Anmelden zum Antworten