zoukankan      html  css  js  c++  java
  • 显示转换

    1、静态转换   static_cast

      static_cast 全部用于明确定义的变换,包括编译器允许我们所做的不用强制转换的“安全”变换和不太安全但清楚定义的变换。

      static_cast包含的转换类型包括典型的非强制变换窄化(有信息丢失)变换,使用void* 的强制变换、隐式类型变换和类层次的静态定位

        int i = 0x7fff;//32767
        long l;
        float f;
        //Typical castless conversions:
        l = i;
        f = i;
        cout<<l<<endl;
        cout<<f<<endl;
        //Static_cast conversions:
        l = static_cast<long>(i);
        f = static_cast<float>(i);
        cout<<l<<endl;
        cout<<f<<endl;
        //Narrowing conversions:
        i = l;
        i = f;
        cout<<i<<endl;
        cout<<i<<endl;
        i = static_cast<int>(l);
        i = static_cast<int>(f);
        char c = static_cast<char>(i);
        cout<<i<<endl;
        cout<<i<<endl;
        cout<<i<<endl;

      2、常量转换 const_cast

        如果从const转换为非const 或 从volatile转换为非volatile, 可以使用const_cast 。这是const_cast 唯一允许的转换;如果进行别的转换就可能使用单独的表达式或者可能会得到一个编译错误。

        

    const int a = 0;
        int* j = (int*)&a;// Deprecated form
        j = const_cast<int*>(&a);// Preferred
        //Can't do simultaneous additional casting:
         long* l = const_cast<long*>(&a);  //Error//!“const_cast”: 无法从“const int *”转换为“long *”
    
        volatile int k = 0;
        int* u = const_cast<int*>(&k);

      3、重解释转换 reinterpret_cast

        这是最不安全的一种转换机制,最有可能出问题。reinterpret_cast把队形假想为模式(为了某种隐秘的目的),彷佛它是一个完全不同类型的对象。

  • 相关阅读:
    每天问自己十个问题
    FreeBSD入门安装及汉化
    商人的10条赚钱规则
    端口扫描程序nmap使用手册
    canvas
    表单2.0
    H5数据保存之storage
    Linux基础命令2
    Linux文件权限与修改
    Linux基础命令1
  • 原文地址:https://www.cnblogs.com/wiessharling/p/2953153.html
Copyright © 2011-2022 走看看