类型转换(将expression转换为type_id类型) | 使用场合 | |
---|---|---|
static_cast< type_id>(expression) | 主要用于非多态类型之间的转换,不提供运行时的检查来确保转换的安全 | 1、用于类层次结构中,基类和子类之间指针和引用的转换;进行上行转换,也就是子类->父类,这种转换是安全的;下行是不安全的;2、用于基本数据类型的转换,如int转换为char等,这种转换也不安全3、用于将void指针转换为目标类型指针,极其不安全的 |
dynamic_cast< type_id>(expression) | type_id必须是类的指针或引用或void*;如果type_id是指针,则expression必须是指针,如果type_id是引用,则expression必须是引用 | 主要用于类层次之间的上行和下行转换,还可用于类之间的交叉转换。在上行转换时,dynamic_cast同static_cast,下行时dynamic_cast具有类型检查功能,比static_cast安全。在多态类型之间的转换主要使用dynamic_cast |
const_cast< type_id>(expression) | 用来将类型的const,volatile,和_unaligned属性移除。你不能直接对非指针和非引用的变量使用const_cast操作符直接移除其的const,volatile,和_unaligned属性 | 常量指针被转换成非常量指针,并且仍然指向原来的对象;常量引用被转换为非常量引用,并且仍然引用原来的对象 |
reinterpret_cast< type_id>(expression) | 主要用于将一种数据类型从一种类型转换为另一种类型。 | 可以将一个指针转换成一个整数,也可以将一个整数转换成一个指针;允许将任何指针类型转换为其它的指针类型。 |
C++显式转型
最新推荐文章于 2021-12-07 23:38:13 发布