zoukankan      html  css  js  c++  java
  • 关于const_cast

    const_cast操作符可以强置去除const指针的const属性。但对简单变量,程序往往作出优化。

    如下面的程序:

    class A{
    public:
     int a;
     A():a(1){}
    };
    int main(){
     const int a=1;
     int* b=const_cast<int*>(&a);
     *b=2;
     cout<<*a<<endl;

     const A ca=A();
        A* cb=const_cast<A*>(&ca);
     cb->a=2;
     cout<<ca.a<<endl;
    }

    结果输出:

    1

    2

    而如果对简单变量new到堆上的话,就可以改掉原来的值了

    class A{
    public:
     int a;
     A():a(1){}
    };
    int main(){
     const int* a=new int(1);
     int* b=const_cast<int*>(a);
     *b=2;
     cout<<*a<<endl;

     const A ca=A();
        A* cb=const_cast<A*>(&ca);
     cb->a=2;
     cout<<ca.a<<endl;
    }

    程序结果为:

  • 相关阅读:
    Spark源码走读4——Scheduler
    Spark源码走读3——Job Runtime
    Spark源码走读2——Spark Submit
    Spark源码走读1——RDD
    Tachyon源码解读一:master部分
    VS2008中MFC界面编程Caption中文全是乱码的解决办法
    程序猿也爱学英语(上),有图有真相
    C++程序员必看书单
    如何将CString转换成WCHAR
    Windows 语音识别编程
  • 原文地址:https://www.cnblogs.com/CUCmehp/p/1373596.html
Copyright © 2011-2022 走看看