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

    程序结果为:

  • 相关阅读:
    ADO.NET 核心对象简介
    ASP.net 内置对象
    行内元素,块级元素与空元素
    ASP.net 常用服务器控件
    javaScript 基础知识
    点击超链接 唤醒企鹅添加好友代码
    使用CSS画出三角形
    NGUI实现的一套不同大小 Item 的循环滚动代码
    xlua怎么样hotfix C#中的重写方法???
    C# ---- GC中代的递增规律
  • 原文地址:https://www.cnblogs.com/CUCmehp/p/1373596.html
Copyright © 2011-2022 走看看