- Dynamic_cast
dynamic_cast<type-id>(expression);
Dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。
Static_cast<type-id>(expression)
该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。
用法:
(1) 用于类层次结构中基类和子类之间指针或引用的转换。
进行上行转换(把子类的指针或引用转换成基类表示)是安全的;
进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。
(2) 用于基本数据类型之间的转换,如把int转换成char,把int转换成enum,转换的安全性需要开发人员保证。
(3)把空指针转换成目标类型的空指针
(4) 把任何类型的表达式转换成void类型
注:static_cast 不能转换掉expression的const,volitate,或者 _unaligned属性。
l 两者对比:
在类层次间进行上行转换时,dynamic_cast 和static_cast 的效果是一样的。
3. Reinpreter_cast
Reinpreter_cast<type-id>(expression)
Const_cast<type-id>(expression)
该运算符用来修改类型的const 或 volatile属性,除了const或volatile修饰之外,type-id和expression的类型是一样的。