Der
C-Wandlungsoperator besitzt zwei große Nachteile:
qDie Notation erinnert zu stark an einen Funktionsaufruf. Beim
Durchlesen von Code können Typwandlungen nicht sofort erkannt werden. In der Zeile
c = Colors( i_in );
kann Colors sowohl eine Funktion
als auch ein Typ sein – im zweiten Fall wird einen Typwandlung durchgeführt.
qEs kann nicht unterschieden werden, welche Wandlung gemeint
ist. Eine Wandlung, die vielleicht nicht im Sinne des Programmierers lag, wird
trotzdem durchgeführt.
Typwandlungen sind prinzipiell gefährlich und sollten deshalb auf
Ausnahmefälle beschränkt bleiben. Typwandlungen sind außerdem eine Fehlerquelle
erster Ordnung. Es ist daher wichtig, in einem Programm Typwandlungen schnell
erkennen zu können. Dies ist für Wandlungen in C-Notation schwierig, da nicht
einfach zwischen Wandlung und Funktionsaufruf unterschieden werden kann.
Der zweite Nachteil wiegt fast noch schwerer: Der C-Wandlungsoperator
wandelt alles, was irgendwie möglich ist. So kann es durchaus passieren, dass
ein reinterpret_cast
durchgeführt wird, obwohl der Programmierer nur einen (harmloseren) static_cast
meinte. Werden die C++-Wandlungsoperatoren mit ihrer speziellen Funktionalität
verwendet, können solche Fehler bereits bei der Übersetzung erkannt werden.