La conversión de tipos (también conocida como coerció o casting), es una operación que nos permite transformar un valor de un tipo de dato a otro.
Esto es necesario cuando trabajamos con diferentes tipos de datos y necesitamos que un valor sea tratado como otro tipo específico.
En C++, existen varias formas de realizar conversiones entre tipos, en dos categorías principales. Conversiones implícitas y conversiones explícitas.
Conversiones implícitas
Las conversiones implícitas ocurren automáticamente cuando el compilador puede convertir un tipo de dato a otro sin pérdida de información significativa.
Esto sucede cuando el tipo de destino puede contener todos los posibles valores del tipo de origen sin riesgo de truncamiento.
Por ejemplo, si tienes una variable de tipo int
y quieres asignar su valor a una variable de tipo long
, C++ realizará la conversión implícita sin necesidad de que tú lo especifiques:
int numeroEntero = 10;
long numeroLargo = numeroEntero;
En este caso, numeroEntero
se convierte implícitamente en long
y se asigna a numeroLargo
.
Conversiones explícitas
Las conversiones explícitas requieren que el programador indique al compilador que desea realizar una conversión de tipo.
Si la conversión no es válida, provocará un error en tiempo de ejecución 💥
Conversión con operador
Para realizar una conversión explícita en C++ podemos utilizar el operador de casting
(tipoDato)objeto
Donde,
- tipoDato: es el tipo de dato de destino
- objeto: es el objeto que se desea convertir.
Por ejemplo, si tenemos una variable de tipo float
y queremos convertirla a un tipo int
, necesitamos realizar una conversión explícita:
float numeroDecimal = 3.14f;
int numeroEntero = (int)numeroDecimal;
Conversión con cast específico
A partir de C++98, además del clásico operador de casting (tipoDato)
, están disponibles los conversores específicos static_cast
, dynamic_cast
, y const_cast
.
Estos tipos de cast ofrecen un mayor control y seguridad sobre las conversiones entre tipos, permitiendo evitar errores comunes y garantizar un comportamiento más predecible.
Lo veremos en el artículo Conversores static_cast, dynamic_cast y const_cast
leer más ⯈