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

    程序结果为:

  • 相关阅读:
    css设置页面内容不能被选中
    bootstrap栅格系统
    MVC框架
    类模板
    c++编译器模板机制剖析
    函数模板与函数重载
    函数模板当参数强化
    泛型编程—函数模板
    用友GRP-u8 注入-RCE漏洞复现
    漏洞代码调试(二):Strtus2-001代码分析调试
  • 原文地址:https://www.cnblogs.com/CUCmehp/p/1373596.html
Copyright © 2011-2022 走看看