类型转换分为哪几种?各自有什么样的特点?

  • static_cast:用于基本数据类型之间的转换、子类向父类的安全转换、void*和其他类型指针之间的转换;

  • const_cast:用于去除constvolatile属性;

  • dynamic_cast:用于子类和父类之间的安全转换,可以实现向上向下转换,因为编译器默认向上转换总是安全的,而向下转换时,dynamic_cast具有类型检查的功能;

    dynamic_cast转换失败时,对于指针会返回目标类型的nullptr,对于引用会返回bad_cast异常;

  • reinterpret_cast:用于不同类型指针之间、不同类型引用之间、指针和能容纳指针的整数类型之间的转换。

发表评论

后才能评论