在c++中,有哪4个与类型转换相关的关键字,这些关键字各有什么特点,应该在什么场合下使用?
C++中,四个与类型转换相关的关键字:static_cast、const_cast、reinterpret_cast、dynamic_cast。
static_cast:主要在静态转换,编译处理期间使用。用于C++中内置的基本数据类型之间的转换,但是没有运行时类型的检测来保证转换的安全性。
const_cast:去常转换,编译时执行。const_cast操作不能在不同的种类间转换。相反,它仅仅把它作用的表达式转换成常量。它可以使一个本来不是const类型的数据转换成const类型的,或者把const属性去掉。
reinterpret_cast:重解释类型转换 。它可以转化任何的内置数据类型为其他的类型,同时它也可以把任何类型的指针转化为其他的类型;它的机理是对二进制进行重新的解释,不会改变原来的格式。
dynamic_cast < type-id > ( expression ):该运算符将expression转换成type_id类型的对象。type_id必须是类的指针,类的引用或者空类型的指针。