Operadores de conversión de C ++

Una conversión es un operador especial que obliga a que un tipo de datos se convierta en otro. Como operador, una conversión es unario y tiene la misma precedencia que cualquier otro operador unario.

El elenco más general admitido por la mayoría de los compiladores de C ++ es el siguiente:

(type) expression

Donde tipo es el tipo de datos deseado. Hay otros operadores de casting compatibles con C ++, se enumeran a continuación:

  • const_cast<type> (expr)- El operador const_cast se usa para anular explícitamente const y / o volatile en un cast. El tipo de destino debe ser el mismo que el tipo de origen, excepto por la alteración de sus atributos constantes o volátiles. Este tipo de conversión manipula el atributo const del objeto pasado, ya sea para establecerlo o eliminarlo.

  • dynamic_cast<type> (expr)- Dynamic_cast realiza una transmisión en tiempo de ejecución que verifica la validez de la transmisión. Si no se puede realizar la conversión, la conversión falla y la expresión se evalúa como nula. Un dynamic_cast realiza conversiones sobre tipos polimórficos y puede convertir un puntero A * en un puntero B * solo si el objeto al que se apunta en realidad es un objeto B.

  • reinterpret_cast<type> (expr)- El operador reinterpret_cast cambia un puntero a cualquier otro tipo de puntero. También permite convertir de puntero a un tipo entero y viceversa.

  • static_cast<type> (expr)- El operador static_cast realiza una conversión no polimórfica. Por ejemplo, se puede utilizar para convertir un puntero de clase base en un puntero de clase derivada.

Todos los operadores de conversión mencionados anteriormente se utilizarán al trabajar con clases y objetos. Por ahora, pruebe el siguiente ejemplo para comprender los operadores de conversión simples disponibles en C ++. Copie y pegue el siguiente programa C ++ en el archivo test.cpp y compile y ejecute este programa.

#include <iostream>
using namespace std;
 
main() {
   double a = 21.09399;
   float b = 10.20;
   int c ;
 
   c = (int) a;
   cout << "Line 1 - Value of (int)a is :" << c << endl ;
   
   c = (int) b;
   cout << "Line 2 - Value of (int)b is  :" << c << endl ;
   
   return 0;
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Line 1 - Value of (int)a is :21
Line 2 - Value of (int)b is  :10