Warum neue Castings in C++?

In C gibt es genau eine Casting-Aufforderung, die alle Probleme löst. Und genau das ist das Problem: liest man den Code, weiß man eigentlich gar nicht mehr weshalb man die Typumwandlung durchgeführt hat. Casten ist zu einfach in C - aufgrund der Kompatiblität von C++ zu C konnten die C-Style-Casts leider nicht aus C++ entfernt werden, doch sollte man sie in C++ nicht weiter verwenden.

Hier gilt zu bedenken, dass das Casten selbst als schlechter Stil zu verstehen ist und die C-Style-Casts damit als noch schlechterer Stil zu begreifen ist. Und wir wollen schließlich gut lesbare Programme schreiben.

Weil Casts allerdings bereits schlechter Stil sind und grundsätzlich eine gewisse Gefahr beherbergen, wurden die Cast-Operatoren so gewählt, dass sie zum einen im Quelltext zum einen leicht durch Suchen zu finden sind und zum anderen hässlich aussehen. Die zweite Begründung stammt übrigens von Bjarne Stroustrup, dem Erfinder von C++. Es soll tatsächlich optisch unangenehm ins Auge fallen, denn ein guter Entwickler möchte auch schönen Code schreiben - also muss er auf Castings verzichten.

Und so lässt sich nun von einem einzelnen C-Style-Cast nun 5 verschiedene Typen von Castings unterscheiden und damit auch deutlicher ausdrücken, was man an dieser Stelle eigentlich vor hat. Dies gibt dem Compiler ebenso die Möglichkeit die Korrektheit des Casts zu prüfen.

Hierbei entspricht der reinterpret_cast am ehesten dem gefährlichen C-Style-Cast. Da der Cast deutlich benannt ist, lassen sich solche - hoffentlich sehr selten auftretenden - Stellen nun sehr einfach im Quelltext finden.