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.