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选择器规范
    利用form的“acceptcharset”在不同编码的页面间提交表单
    学习Ruby的基础知识
    Watir和watir webdriver的区别
    PHP in_array() 函数
    Ruby数组的基础知识
    PHP smarty if的条件修饰词
    很好的自动化学习资料 Ruby watir selenium
    $(document).ready() 和window.onload
    收藏:简单的PHP+SMARTY分页类
  • 原文地址:https://www.cnblogs.com/CUCmehp/p/1373596.html
Copyright © 2011-2022 走看看