zoukankan      html  css  js  c++  java
  • C++显式转换和C语言的强制类型转换之间的区别

    C语言的强制类型转换的功能更通用,即它具有static_cast, const_cast和reinterpret_cast相似的行为。

    但是,

    • static_cast只能应用于明确定义了的类型转换,并且不能用于底层const(lower const)的转换。

    • const_cast只能改变底层const

    • reinterpret_cast通常用于重新解释一个指针类型,使用需小心。

    然而,C语言的强制类型转换没有细分的这么明显,它拥有了这三者的功能。

    见代码:

    int a = 0;
    int *pa = &a; 
    const int *cpa = &a; 
    
    //static_cast<int*>(cpa);   // invalid static_cast from type ‘const int*’ to type ‘int*’
    //static_cast<char*>(pa);   // invalid static_cast from type ‘int*’ to type ‘char*’
    
    const_cast<int*>(cpa);      // OK
    
    reinterpret_cast<char*>(pa);// OK
    
    (int*)cpa;                  // OK
    (char*)pa;                  // OK
    
    return 0;
    
  • 相关阅读:
    qt install (1)
    learning rewind func
    learning strrchr func
    learning memchr func
    git lfs setpu(4)
    大端与小端
    git branch/meger step(3)
    git log/show/HEAD step(2)
    调用外部EXE文件
    获取计算机上的所有进程
  • 原文地址:https://www.cnblogs.com/demon90s/p/9094524.html
Copyright © 2011-2022 走看看