在c语言中,用于强制类型转换的方式,采用Type A = (Type)B。没有类型检查,非常不安全。在c++中有四种类型转换方式 reinterpret_cast, static_cast, dynamic_cast,const_cast.四种类型转换方式。
1. reinterpret_cast
与c语言中的强制累心给转换相似,可以用于没有任何关系的类型转换,非常不安全,不建议使用。
char a = 'A';
int b = reinterpret_cast<char> a;
2. static_cast
可以用于基本类型的数据转换,带有父子继承关系类的转换。可以子类转父类,也可以父类转子类
//转换基本类型
char a = 'A';
int b = static_cast<char> a;
// 转换父子继承类
// 父类转子类
Animal *A;
Cat *B = static_cast<Animal *> B;
// 子类转父类
Cat *A;
Animal *B = static_cast<Cat*> B;
3. dynamic_cast
主要用于子类转父类,不可以父类转子类
// 子类转父类
Cat *A;
Animal *B = static_cast<Cat*> B;
4. const_cast
主要用于去除const和加上const特性,可以用于转换基本数据类型和类指针
int a = 10;
contst int &b = a;
//报错,b不可以被修改
b= 20;
int c = const_cast<int> b;
c = 20;
//a,b,c 都被修改为20