C++四大转换

static_cast:

  1).基本数据类型之间的转换,如int转为char,int转为enum。;
  2).具有继承关系的父类子类之间指针和引用的转换。上行转换:父类指向子类是安全的;下行转换:子类指向父类是不安全的,需要程序员保证有继承关系。
  3).不进行类型检查,需要编写人员保证安全;
  4).把void指针转换成目标类型指针。极其不安全。

dynamic_cast:

  1).具有继承关系的父类指针可以指向子类的指针或对象(上行转换可以),反之则不行,返回nullptr。
  2).具有继承关系的父子类对象与对象间不能转换,因为左值对象的地址不能改变。
  3).下行转换:子类指向父类不允许,返回nullptr。
  4).交叉继承时,上行转换不能直接转需要按直接继承关系之间转多次。
  5).进行类型检查,出错时返回nullptr

reinterpret_cast:

  1).可以把一种数据类型转换成另一种数据类型,如指针转为int、int转指针;
  2).指针存在全局变量时,要去传递这个指针在多个程序之间,可以把他转为int类型,需要是再转为指针。

const_cast:

  1).用于被const修饰的变量去除const、volatile、__unaligned 属性
  2).不能对非指针、非引用变量直接使用const_cast

posted @ 2023-11-24 15:40  Labant  阅读(65)  评论(0)    收藏  举报