首页 > 代码库 > C++提供的四种新式转换--const_cast dynamic_case reinterpret_case static_case

C++提供的四种新式转换--const_cast dynamic_case reinterpret_case static_case

1、const_cast通常被用来将对象的常量刑转换,它也是唯一有此能力的C++-style转型操作符。

2、dynamic_cast主要用来执行“安全向下转型”,也就是用来决定某对象是否归属继承体系中的某个实现。他是唯一无法由旧式语法执行的动作,也是唯一可能耗费重大运行成本的转型动作。

3、reinterpret_case意图执行低级转型,实际动作(及结果)可能取决于编译器,这也就表示它不可移植。例如将一个pointer to int转型为一个int,这一类转换在低级代码意外很少见到。

4、static_cast用来强迫隐式转换,例如将non-const对象转换为const对应,或将int转换为double等等,它也可以用来执行上述多种转换的反向转换,例如将void*指针转为typed指针,将pointer-to-base转为pointer-to-derived。但无法将const转为non-const(这个只用const_cast才能办到)


如果打算将常量性去掉,除非使用新式转型中的const_cast 否则无法通过编译。