zoukankan      html  css  js  c++  java
  • C++显式转换

    标准C++包含一个显式的转换语法:

    --static_cast:用于“良性”和“适度良性”的转换,包括不用强制转换

    --const_cast:用于“const”和/或“volatile”进行转换

    --reinterpret_cast:转换为完全不同的意思。为了安全的使用它,关键必须转换回原来的类型。转换成的类型一般只能用于位操作,否则就是为了其他隐秘的目的。这是所有转换中最危险的。

    --dynamic_cast:用于类型安全的向下转换

    -----常用-----

    static_cast:用于所有明确定义的转换,包括void*的强制转换、隐式类型转换、类层次的静态定位。

    1. 数据类型由小到大的转换,比如int转换为long或float;

    int i ; static_cast<long>(i); static_cast<float>(i);

    2. 窄化转换,即数据类型由大到小的转换,可能丢失数据;

    3. c++中是不允许对一个void*类型的数据赋值的;

    void* ptr;  ptr = static_cast<void*>(i);

    const_cast:常量转换,如果从const转换为非const或从volatile转换为非volatile,可以使用const_cast。这是const_cast唯一允许的转换。

    volatile int k = 0;   int* u = const_cast<int*>(&k);

  • 相关阅读:
    小程序教程3
    小程序教程2
    小程序教程1
    sublime介绍常用插件和快捷键
    ionic1跨域问题
    上传文件到windows server, 导出文件到linux, 打包压缩
    windows远程管理服务winrm
    windows配置ssh服务
    前端:websocket脚本
    前端实现: 抓拍和定时弹出任务
  • 原文地址:https://www.cnblogs.com/davidsguo008/p/3607584.html
Copyright © 2011-2022 走看看