Dynamic_cast c ++

Dynamic_cast c ++
El reparto dinámico en el lenguaje de programación C ++ se discutirá en este artículo. Para comenzar, debemos entender la noción de casting y muchos tipos de casting. El proceso de alteración del tipo de datos de una variable se conoce como fundición. El casting se divide en dos categorías en el lenguaje de programación de C ++: casting implícito y casting explícito.

Conversión de tipo de datos en C ++:

El tipo de fundición es el procedimiento de alterar el tipo de datos a algún otro tipo de datos. Hay dos tipos de fundición o conversión de tipo en el lenguaje de programación de C ++: Casting implícito y explícito. La conversión de tipo automatizada es otro nombre para la tipografía implícita. El compilador lo realiza durante la compilación en tiempo real y no necesita ninguna entrada o acción del usuario. Cuando hay dos tipos de tipos de datos en una expresión, esta forma de fundición ocurre. Por ejemplo:

En el código dado, podemos ver que una variable entera y una variable de caracteres se insertan en la expresión de la última línea, y el valor de la variable entera "i" se cambia. El número ASCII equivalente de "A" se convertirá en un valor de carácter y se agregará al valor entero de la variable "I" en esta declaración. Si se imprime el valor de la variable "I", el resultado será un total de ambos valores. El compilador transforma automáticamente el tipo de datos de la variable de caracteres en un tipo de datos enteros al convertirlo en el valor estándar ASCII del alfabeto a la derecha, que es un gran ejemplo de conversión de tipo implícita o automatizada en el tiempo de ejecución.

Ahora, cuando se trata de fundición o conversión de tipo de tipo explícito, no es un proceso automatizado; El usuario debe convertir manualmente un tipo de datos de una variable a otro tipo de variable en el código. Los tipos de datos generalmente se organizan en una jerarquía basada en su espacio de memoria y la cantidad de información que pueden tener. Por lo tanto, cuando se utiliza un tipo de datos de orden inferior para almacenar cualquier información, pero debe transformarse en un tipo de datos de orden superior para que se pueda minimizar la pérdida de información y se pueda almacenar cada vez más información, la fundición de tipo explícita o la conversión de tipo son comúnmente hecho. Por ejemplo, debido a que una variable de tipo entero no puede almacenar valores después del punto decimal, podemos perder alguna información si continuamos utilizando variables enteras. Para evitar esta pérdida, convertimos la variable entera en una variable flotante, guardando valores después de los puntos decimales y evitando la pérdida de información. La conversión de tipo explícita en el lenguaje de programación de C ++ se puede lograr de una de dos maneras: mediante asignación o utilizando el operador de reparto. La conversión de asignación se realiza en una expresión de código, y la sintaxis para esta expresión se proporciona a continuación.

# "(Tipo de datos) Expresión"

En el código anterior, debemos colocar un tipo de datos válido dentro del soporte, y después del soporte, debemos escribir la variable o expresión que deseamos modificar en el tipo de datos escrito dentro del soporte.

Ahora analizaremos el tipo de conversión realizada por los operadores de reparto en el lenguaje de programación C ++. Los operadores de fundición también se llaman operadores unarios que obligan a una variable a cambiar su tipo de datos de uno existente a otro. Hay cuatro tipos de operadores de fundición: elenco estático, el elenco dinámico, el elenco de constante y la reinterpretación del elenco.

Casting dinámico en C ++:

El lanzamiento dinámico en el lenguaje de programación C ++ se basa en un concepto llamado RTTI (identificación de tiempo de tiempo de ejecución). RTTI es una función presente en varios lenguajes de programación como C/C ++, ADA y Object Pascal. La identificación o información del tipo de tiempo de ejecución es una función que identifica y extrae la información sobre los detalles del tipo de datos de un objeto en el tiempo de ejecución de un programa. Esta función proporciona una ruta segura para los métodos de fundición de tipo como la función "typeID" o la fundición de tipo dinámico. Detecta la información del tipo de datos en el tiempo de ejecución y ayuda a la conversión del tipo de datos cuando los operadores están en juego.

El casting dinámico se utiliza principalmente en C ++ para el lanzamiento de tiempo seguro de tiempo de ejecución. Para trabajar con el reparto dinámico, la clase base debe tener 1 función virtual. El reparto dinámico solo funciona con clases de base polimórfica porque utiliza esta información para determinar la fundición segura. Un operador de reparto dinámico hace un casting dinámico. Ahora que sabemos sobre los conceptos relacionados con el lanzamiento dinámico, podemos ir hacia la parte de implementación. Primero veamos la sintaxis para usar la fundición dinámica en el lenguaje de programación C ++, que se escribe a continuación:

# "Dynamic_cast (Expression)"

En la expresión anterior, la primera parte describe el nombre del operador; En los soportes de ángulo, escribimos el nombre del tipo de datos en el que necesitamos convertir nuestra expresión, y en los soportes redondos, escribimos el nombre de la variable u objeto que queremos convertir.

Ahora que sabemos cómo usar el operador de cajra dinámica y completar los parámetros para convertir los tipos de datos de variables, podemos usarlo para convertir los tipos de variables de datos.

Uso del método de fundición dinámica en Ubuntu 20.04:

Para implementar este concepto, debemos usar varias clases para trabajar para convertir objetos de la clase por herencia. Entonces, para hacer eso primero, primero debemos saber que el archivo del programa C ++ en el entorno de Ubuntu se almacena con la extensión ".CPP ", así que para crear este archivo en nuestro escritorio, abra un terminal y escriba" Desktop de CD "en la línea de comando, luego presione ENTER y escriba" Touch FileName .CPP "para crear un archivo con el".extensión de CPP ”. Ahora escribiremos un código en ese archivo para crear una clase base y 2 clases derivadas, y en el código del controlador, usaremos el operador de reparto dinámico.

Salga del archivo después de hacer clic en el botón Guardar. Regrese al terminal y cree el archivo usando el comando "G ++" con el nombre de su archivo y el ".extensión de CPP ”. Un archivo con la extensión ".out "se creará usando este comando. Ahora puede ejecutar ese archivo ingresando "./"Seguido de tu".Extensión de fuera ".

En este programa, las tiendas de puntuación de clase base derivan objetos de clase 1 (D1). La clase base de fundición dinámica, el puntero retuvo el objeto Derived1 y lo asignó a la clase 1 derivada, que proporcionó un casting dinámico válido.

Conclusión:

Este artículo nos enseñó el método de fundición de tipo utilizado en el lenguaje de programación C ++. El tipo de casting también se discutió en detalle, y nos centramos en la necesidad de por qué utilizamos tales métodos en la programación de C ++. Discutimos la función de asistencia que ayuda a la conversión del tipo de datos de la variable obteniendo información y verificando la conversión correcta llamada RTTI. También implementamos el concepto de casting dinámico utilizando el operador de reparto dinámico en una expresión en el lenguaje de programación C ++ en el Ubuntu 20.04 entorno.