C ++ reinterpret_cast

C ++ reinterpret_cast
Un puntero siempre es devuelto por el reinterpret_cast. Reinterpret_cast puede ejecutar lo incorrecto y tiende a hacer la modificación apropiada al puntero si B tiene mucho más que una clase abstracta y A no es la primera clase abstracta.

Tipo de retorno del reinterpret_cast

No hay tipo de retorno para ello. El tipo de puntero solo se convierte.

Parámetros del reinterpret_cast

La variable de puntero de referencia es el único argumento que acepta.

Uso de reinterpret_cast

    • El operador de casting reinterpret_cast es único y problemático. Se recomienda utilizarlo con el tipo de datos apropiado.
    • Cualquier puntero se convierte en un tipo de tipo de datos.
    • Se utiliza mientras se trabaja con bits.
    • Si utilizamos el reinterpret_cast, el producto carece de su portabilidad. Se recomienda no emplear esta noción a menos que sea estrictamente esencial.
    • Se emplea exclusivamente para escribir cualquier puntero a su tipo real.
    • El valor booleano se transforma en un número binario.

Hablemos más sobre el C ++ Interpret_cast.

Ejemplo 1:

En este ejemplo, mostraremos cómo funciona el reinterpret_cast en su nivel más fundamental.

#incluir
usando el espacio de nombres STD;
int main ()

int* a = new int (90);
char* chr = reinterpret_cast(a);
cout << *a << endl;
cout << *chr << endl;
cout << a << endl;
cout << chr << endl;
regresar 0;



Comenzamos el código integrando el archivo de encabezado . El espacio de nombres estándar se usa en el siguiente paso. Definimos la función principal (). Dentro de la función, construimos un puntero. Junto con esto, inicializamos una variable y proporcionamos un valor de este puntero.

A continuación, declaramos un puntero del tipo de datos de caracteres. Usamos el comando reinterpret_cast. Aquí pasamos el puntero del personaje. Además, utilizamos primero la declaración Cout para imprimir el puntero variable, así como el puntero de los personajes. Luego, empleamos la instrucción Cout para mostrar los valores de ambos punteros. Al final, aplicamos el comando Devuelve 0.

Ejemplo 2:

Este código demuestra cómo utilizar la estructura como ilustración.

#incluir
usando el espacio de nombres STD;
estructurar mystruct
int i;
int j;
encanto;
bool n;
;
int main ()

mystruct e;
mi.i = 25;
mi.j = 40;
mi.m = 'u';
mi.n = verdadero;
int* ptr = reinterpret_cast(&mi);
cout << sizeof (e) << endl;
cout << *ptr << endl;
ptr ++;
cout << *ptr << endl;
ptr ++;
char* chr = reinterpret_cast(PTR);
cout << *chr << endl;
chr ++;
bool* b = reinterpret_cast(chr);
cout << *b << endl;
cout << *(reinterpret_cast(chr));
regresar 0;



La biblioteca y el espacio de nombres estándar se utilizan al comienzo del código. Creamos una estructura denominada MyStruct. Dentro de esta estructura, inicializamos dos variables llamadas I y J. Luego, creamos otras dos variables a partir de las cuales la primera variable tiene un tipo de datos de caracteres y la segunda variable tiene un tipo de datos booleanos. En el paso posterior, usamos la función Main (). Dentro de esta función, llamamos una variable "E" de la estructura "MyStruct".

Luego, asignamos algunos valores aleatorios a la variable asociada con la estructura. Las dos primeras variables contienen los valores enteros. La tercera variable contiene el personaje. La última variable contiene el valor booleano. Durante la fundición, el tipo de datos de la variable es el mismo que el de la variable real. Ahora, convertimos el puntero de "E" en el puntero de la variable que tiene el tipo de datos enteros. Construimos el puntero y establecemos su valor igual al reinterpret_cast. Luego, utilizamos la declaración de cout. Incrementamos el valor del puntero "PTR" por 1. Ahora, imprimimos el valor del siguiente puntero, por lo que empleamos la declaración Cout nuevamente.

Además, el valor de este puntero se eleva por 1. Aplicamos el casting al puntero del personaje "CHR" mediante el uso de reinterpret_cast. Ahora, solo muestre el valor del puntero del personaje con la ayuda de la declaración Cout. Como *Chr ya corresponde a un valor booleano, se emplea una transformación de tipo de datos similar para obtener el valor. Por lo tanto, usamos el tipo de datos *B, que es un bool. Utilizamos el reinterpret_cast para el puntero booleano. Imprimimos el valor de esa variable booleana aplicando la instrucción Cout. El reinterpret_cast se emplea para mostrar el valor apuntado por *chr. Para finalizar el código, use la declaración de retorno 0.

Ejemplo 3:

El reinterpretador del puntero se demuestra en este caso.

#incluir
usando el espacio de nombres STD;
clase u
público:
Void Fun_x ()

cout << " Present in class U\n";

;
Clase V
público:
Void Fun_B ()

cout << " Present in class V\n";

;
int main ()

V* i = nuevo v ();
V* new_x = reinterpret_cast(i);
new_x-> Fun_x ();
regresar 0;



En primer lugar, presentamos el módulo y el espacio de nombres estándar. Entonces, construimos una clase llamada u. Definimos una función de esta clase públicamente. Utilizamos el comando cout dentro de esta función. Entonces, hacemos una nueva clase llamada V. Después de llamar a la función, lo hacemos público. Aquí, se usa la declaración de cout. Comenzamos la codificación dentro del método Main (). Primero, construimos el objeto "I" de la Clase V. Transformamos el puntero al objeto y damos la referencia de la Clase V a la Clase U, por lo que utilizamos el reinterpret_cast. A continuación, recuperamos la función "Fun_x" de la clase U. Luego, aplique el comando return 0 para finalizar el programa.

Conclusión

Discutimos el C ++ reinterpret_cast en este artículo. Hay un operador de casting llamado reinterpret_cast en c++. No importa si las clases están conectadas o no, se utiliza para transformar un puntero de un tipo de datos en algún otro puntero. Evaluamos tres ejemplos y en uno de ellos, podemos ver cómo usar el reinterpret_cast opera en su forma más básica. En el segundo ejemplo, utilizamos una estructura y luego usamos el reinterpret_cast para cambiar su puntero a otro puntero. La última ilustración muestra una reinterpretación de puntero.