La Red de Conocimientos Pedagógicos - Conocimientos históricos - ¿Por qué se utilizan conversiones en muchos lugares de la biblioteca estándar de C++?

¿Por qué se utilizan conversiones en muchos lugares de la biblioteca estándar de C++?

1. Hay cuatro conversiones de tipos forzadas en C++, por lo que C++ no es seguro para tipos.

Son: static_cast,dynamic_cast, const_cast, reinterpret_cast

2 La diferencia entre las cuatro conversiones:

static_cast: puede realizar una de las integradas. tipos de datos básicos en la conversión de C ++ entre.

const_cast: la operación const_cast no puede convertir entre diferentes tipos. En cambio, simplemente convierte una expresión sobre la que actúa en una constante. Puede convertir datos que no son de tipo constante en un tipo constante o eliminar el atributo constante.

reinterpret_cast: Tiene las mismas capacidades que los casts estilo C. Puede convertir cualquier tipo de datos integrado a cualquier otro tipo de datos y también puede convertir cualquier tipo de puntero a otros tipos. Incluso puede convertir tipos de datos integrados en punteros sin tener que considerar la seguridad de tipos o las condiciones constantes. Nunca lo utilices a menos que sea absolutamente necesario.

dynamic_cast: los otros tres se completan en tiempo de compilación, Dynamic_cast se procesa en tiempo de ejecución y se requiere verificación de tipos en tiempo de ejecución. No se puede utilizar para conversiones de tipos de datos básicos integrados. Si la conversión dinámica_cast tiene éxito, devolverá un puntero o referencia a la clase. Si la conversión falla, devolverá NULL. Si se usa Dynamic_cast para la conversión, debe haber una función virtual en la clase base; de ​​lo contrario, la compilación no pasará.