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);

  • 相关阅读:
    Unix Vi 命令详解
    硬盘安装 solaris
    Oracle 10g RAC OCR 和 VotingDisk 的备份与恢复
    Unix vmstat 命令
    Unix Vi 命令详解
    How do I rename a data file
    Oracle 购买价格 和 服务费 计算方式
    Solaris 更改系统语言
    硬盘安装 solaris
    How do I rename a data file
  • 原文地址:https://www.cnblogs.com/davidsguo008/p/3607584.html
Copyright © 2011-2022 走看看