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把队形假想为模式(为了某种隐秘的目的),彷佛它是一个完全不同类型的对象。

  • 相关阅读:
    怎样开始学日语
    转 送给日语初学者的寄语
    分享一个flash播放音乐的类
    日语网址
    北京奥运会门票价格一览表
    上班防沉迷系统
    ActionScript 3.0 概要
    Actionscript 3学习资源
    客户导入后需要Update的字段
    ORA01219
  • 原文地址:https://www.cnblogs.com/wiessharling/p/2953153.html
Copyright © 2011-2022 走看看