类型转换

来源:互联网 发布:ipad版淘宝不支持横屏 编辑:程序博客网 时间:2024/06/05 03:12
  • C方式强制类型转换存在问题
    -过于粗暴
    任意类型之间都可以进行转换,编译器很难判断其正确性
    -难于定位
    在源码中无法快速定位所有使用强制类型转换的语句

  • C++将强制类型转换分为4种不同的类型
    static_cast
    const_cast
    dynamic_cast
    reinterpret_cast
    用法:xxx_cast(expression)

  • static_cast强制类型转换
    用于基本类型间的转换
    不能用于基本类型指针间的转换
    用于有继承关系类对象之间的转换和类指针之间的转换

  • const_cast强制类型转换
    用于去除变量的只读属性
    强制转换的目标类型必须是指针或引用

  • reinterpret_cast强制类型转换
    用于指针类型间的强制转换
    用于整数和指针类型间的强制转换

  • dynamic_cast强制类型转换
    用于有继承关系的类指针间的转换
    用于有交叉关系的类指针间的转换
    具有类型检查的功能
    需要虚函数的支持