const_cast:
去掉const属性
dynamic_cast:
只能用于指针和引用的转换,可以将父类指针转换成对应的子类指针,但是在向下转换的时候父类一定要有虚函数,否则会编译错误,如果是转换失败,指针的转换会返回null,引用的转换会抛出异常。
static_cast:
可以实现基本类型之间的相互转换,可以实现空类型指针到其他类型指针的转换,可以实现子类和父类之间的互相转换,可以实现任何类型转换成void类型。
reinpreter_cast:
可以实现不相关类型的转换,简单的实现二进制的拷贝,并不作任何类型检查,所以类似于int转向double的情况,就会出问题,因为只是简单的将4个字节的二进制转换给double,而并不满足double的二进制保存方式,在自己的编译器测试,编译不通过