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

  • 相关阅读:
    洛谷 P2384 最短路
    洛谷 P2910 [USACO08OPEN]寻宝之路Clear And Present Danger
    POJ 3264 Balanced Lineup
    洛谷 P1892 团伙
    洛谷 P1724 东风早谷苗
    P1129 [ZJOI2007]矩阵游戏
    P1894 [USACO4.2]完美的牛栏The Perfect Stall
    Poj 3041 Asteroids
    P3377 【模板】左偏树(可并堆)
    P1613 跑路
  • 原文地址:https://www.cnblogs.com/davidsguo008/p/3607584.html
Copyright © 2011-2022 走看看