- const_cast
去除const
Person *p1 = new Person();
Person *p2 = const_cast<Person *>(p1);
-
dynamic_cast
多态类型的转换,有安全检测(子类指针指向父类对象这种操作就不安全,会把指针指向为NULL) -
static_cast
缺乏安全检测,不能交叉转换(不是同一继承体系的,不能转换),用于基本数据类型,非const转const -
reinterpret_cast
属于较底层的强制转换,没有任何类型检查和格式转换,仅仅是简单的二进制拷贝,可以交叉转换,可以将指针和整数进行互相转换