Weil C++ anders als C ist. Es gibt nicht viele Stellen, wo Casting Sinn macht. Nenne doch einfach mal Beispiele, wo du gerne casten würdest, in den meisten Beispielen wird sich dann ein Designfehler herausstellen
Und jetzt komm nicht mit malloc()! Dafür gibt es operator new() in C++, dieser ist typsicher und (was viel wichtiger ist) er ruft den Konstruktor des Objekts auf.
ps: eine Stelle für Casting wäre, um in nicht-trivialen const und non-const Memberfunktionen Codeverdopplung zu vermeiden.
*edit: Ich merke grade, dass ich die eigentliche Antwort schuldig geblieben bin ^^*
Es ist böse zu casten in C++, weil du damit das Typensystem umgehst und somit dem Compiler di Möglichkeit entziehst, den Code auf Herz und Nieren zu prüfen.
Schau dir dieses einfache Beispiel an:
Code: Alles auswählen
float a = 3.0;
// bin jetzt mal Tippfaul und caste mit C-Casts, die C++ Casts würden da aber auch nichts ändern, es sieht nur schöner aus.
int i = (float) a; // das funktioniert noch wie erwartet, i ist jetzt 3
int* p = (int*) &a; // das wird jetzt aber Murks, auf meinem System ist die Ausgabe von *p == 1077936128
std::cout << i << '\n' << *p << std::endl;
Ohne die Casts würde mir das der Kompiler sofort um die Ohren hauen, mit Schluck er es, weil er keine Chance hat, das zu überprüfen. Wir sagen ihm: "Das ist okay so", aber es ist halt nicht immer okay, wie man sieht.