类型转换分为哪几种?各自有什么样的特点?
static_cast:用于基本数据类型之间的转换、子类向父类的安全转换、void*和其他类型指针之间的转换;-
const_cast:用于去除const或volatile属性; -
dynamic_cast:用于子类和父类之间的安全转换,可以实现向上向下转换,因为编译器默认向上转换总是安全的,而向下转换时,dynamic_cast具有类型检查的功能;dynamic_cast转换失败时,对于指针会返回目标类型的nullptr,对于引用会返回bad_cast异常; -
reinterpret_cast:用于不同类型指针之间、不同类型引用之间、指针和能容纳指针的整数类型之间的转换。