zoukankan      html  css  js  c++  java
  • 新型的类型转换

    c方式的强制类型转换

    (Type)(Expression)

    Type(Expression)

    c方式强制类型转换存在的问题

    过于粗暴

      任意类型之间都可以进行转换,编译器很难判断其正确性

    难于定位

      在源码中无法快速定位所有使用强制类型转换的语句

    问题:

    强制类型转换在实际工程中是很难完全避免的!

    如何进行更加安全可靠的转换?

    新式类型转换

    c++将强制类型转换分为4种不同的类型

    static_cast const_cast dynamic_cast reinterpret_cast

    用法:xxx_cast<Type>(Expression)

    static_cast强制类型转换

      用于基本类型间的转换

      不能用于基本类型指针间的转换

      用于有继承关系类对象之间的转换和类指针之间的转换

    const_cast强制类型转换

      用于去除变量的只读属性

      强制转换的目标类型必须是指针或引用

    dynamic_cast强制类型转换

      用于有继承关系的类指针间的转换

      用于有交叉关系的类指针间的转换

      具有类型检查的功能

      需要虚函数的支持

    reinterpret_cast强制类型转换

      用于指针类型间的强制转换

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

    小结

    c方式的强制类型转换

      过于粗暴

      潜在的问题不易被发现

      不易在代码中定位

    新式类型转换以c++关键字的方式出现

      编译器能够帮助检查潜在的问题

      非常方便的在代码中定位

      支持动态类型识别(dynamic_cast)

  • 相关阅读:
    java jni 调用c语言函数
    BeautifulSoup入门
    Python单引号、双引号、三个双引号的区别
    Request库的安装与使用
    awk命令入门
    sed命令入门
    编译生成protobuf的jar包
    编辑crontab添加Linux计划任务
    tar命令详解及使用实例
    MySQL用户管理
  • 原文地址:https://www.cnblogs.com/sugarWill666/p/9063521.html
Copyright © 2011-2022 走看看