您的位置:首页 > 编程语言 > C语言/C++

C++中四种强制类型转换操作符之间的区别

2010-06-10 16:00 162 查看
先介绍const_cast和reinterpret_cast:

const_cast用于消除类型中的const, volatile, __unaligned属性。

reinterpret_cast主要用于转换不相容的数据类型,特别是在指针类型和非指针类型之间进行转换,当然它也可以用于转换指针之间的转换。

再介绍一对相对立的static_cast和dynamic_cast:

它们都是c++风格的强制类型转换,不过不具备上面2中转换的特性,即:不能在指针类型和非指针类型之间进行转换,也不能消除类型中的const和volatile属性。

它们的区别在于:static_cast在编译时刻就验证被转换的变量与目标类型之间是否相容,如果类型转换不合理,就会导致编译时刻错误;dynamic_cast在运行时刻对强制类型转换进行检查。当指针无效时,返回0,若是无效的引用强制类型转换就发生bad_cast异常。

另外,dynamic_cast不能用于转换没有继承关系的类型,如int转换到double类型。

详情可以参加《More Efective C++》第二条。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: