C++--问题26--强制类型转换
1.C语言的类型强转
方式如下:(Type)value/expression
就是在变量或者表达式前面加小括号和类型表示类型强转。
2.C++提供了自己特有的四种类型强转
分别如下:
(1)static_cast:
更安全的类型强转,static_cast它能在内置的数据类型间互相转换,对于类只能在有联系的指针类型间进行转换。


(2)dynamic_cast:
支持RTTI类型转换 ,通常在基类和派生类之间转换时使用,
表达式dynamic_cast<T*>(a)
将a值转换为类型为T的对象指针。如果类型T不是a的某个基类型(a变量的类型或者是a类型的派生类类型),该操作将返回一个空指针,否则转换成功;
常用于运行时检测a指针指向的对象是否是特定派生类类型的对象。


(3)const_cast:
表达式const_cast<T>(a)
常被用于去除这里a变量或表达式的const属性,a的类型就是T。


(4)reinterpret_cast:
类似C的强转,任何指针都可以转换成其它类型的指针,不安全的。
