static_cast, dynamic_cast, reinterpret_cast, const_cast的区别

static_cast最像C风格的强制转换,很多时候都需要程序员自身去判断转换是否安全。但是相对C风格的强制转换,在无关类的类指针之间转换上,有安全性的提升。

dynamic_cast是运行时的转换吧,要求new_type为指针或引用,其二是下行转换时要求基类是多态的(基类中包含至少一个虚函数)。dynamic_cast可以识别出不安全的下行转换,但并不抛出异常,而是将转换的结果设置成null。这个dynamic也有很多问题。需要运行时确定类型信息, 说明设计有缺陷?https://www.zhihu.com/question/22445339

reinterpret_cast这个转换是最“不安全”的,两个没有任何关系的类指针之间转换都可以用这个转换实现。但是需要new_type是指针或者引用。

const_cast代表常量和非常量之间的转换。

原文地址:https://www.cnblogs.com/Key-Ky/p/8109279.html