C++ 类型转换运算符不能直接改变对象类型,它们只能将一种数据类型转换为另一种数据类型
- 静态类型转换(Static Cast):通过在编译时确定要转换的类型来执行转换。它主要用于基本数据类型之间的转换(如 int 到 float)和空指针之间的转换。静态类型转换的语法如下:
static_cast<TargetType>(expression);
- 动态类型转换(Dynamic Cast):在运行时确定要转换的类型。它主要用于类层次结构中的对象类型转换。动态类型转换可以检查转换是否有效,如果无效,则返回空指针(对于指针类型)或抛出异常(对于引用类型)。动态类型转换的语法如下:
dynamic_cast<TargetType*>(expression);
- 常量类型转换(Const Cast):用于修改类型的常量性或易变性。它可以添加或删除类型的常量性和易变性修饰符。常量类型转换的语法如下:
const_cast<TargetType>(expression);
- 重解释类型转换(Reinterpret Cast):将一种类型的指针转换为另一种类型的指针。这种转换通常是不安全的,因为它不会执行任何类型检查或格式转换。重解释类型转换的语法如下:
reinterpret_cast<TargetType*>(expression);
请注意,使用这些类型转换运算符时,需要确保转换是合法的,否则可能导致未定义的行为。在进行类型转换时,最好使用C++的类型萃取库(如std::is_same
、std::is_convertible
等)来检查类型之间的关系。