static_cast dynamic_cast reinterpret_cast const_cast 的区别和使用方法

static_cast:类似于C的普通强制类型转换,所以使用起来危险一点。
dynamic_cast:属于指针转换、较为安全的转换,用于类层次间的上行转换和下行转换,也用于类之间的交叉转换,上行转换时,和static_cast是一样的,下行转换时,本类型具有类型检查功能,比static_cast更安全。
reinterpret_cast:用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。
const_cast:针对const和volatile的转换,为了去掉或着加上const修饰符号。但是对于本身定义时为const的类型,即使你去掉const性,在你操作这片内容时候也要小心,只能read不能write操作,否则还是会出错,属于特殊情况。

如果你不知道该用哪个,就用static_cast,如果dynamic_cast不让转,也用static_cast,最后才用reinterpret_cast。

 

你可能感兴趣的:(static_cast dynamic_cast reinterpret_cast const_cast 的区别和使用方法)