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
本文来自博客园,作者:Labant,转载请注明原文链接:https://www.cnblogs.com/lvshen/p/17853893.html