Casten durch Konstruieren

Grundsätzlich sieht das Casten durch Konstruieren ähnlich aus wie ein C-Cast:

double pi = 3.1415;
 
int almostPi = (int) pi;  // C-Type-Cast
int almostPi = int( pi ); // Cast durch Konstruktion

Hier wird der Konstruktor des gewünschten Datentyps (hier int) aufgerufen wird und ein neues Objekt des Datentyps erzeugt. In diesem Fall wird also der Datentyp, wenn man es genau nimmt, nicht umgeformt, sondern es wird eigentlich mit dem Konstruktor ein neues, passendes Objekt erzeugt, das mit dem vorhandenen Objekt initialisiert wird. Dafür muss natürlich ein passender, unärer1) Konstruktor vorhanden sein. Der Entwickler muss also genau beschreiben, wie er aus dem einen Datentyp einen anderen Datentyp erzeugt.

Mit dieser expliziten Beschreibung, wie man von einem Typ auf den nächsten kommt, ist man grundsätzlich eigentlich immer auf der sicheren Seite. Das Erzeugen eines neues Objektes kann jedoch zusätzlich Rechenzeit kosten und damit das Programm verlangsamen, wenn so laufend Daten konvertiert werden.

1)
unär bedeutet, dass es nur einen Parameter gibt, nämlich das Objekt mit dem das neue Objekt konstruiert bzw. initialisiert wird