开发者社区> 问答> 正文

C++转换的问题const_cast

建立一个const double数组,通过引用每个数组的下边且用const_cast把每个元素分别转为non_const,然后对每个元素赋值

展开
收起
a123456678 2016-03-06 10:22:20 1808 0
1 条回答
写回答
取消 提交回答
  • 关于这个const 和 const_cast 还是比较麻烦的
    认真查过哟~
    首先 const_cast 无法对于变量的脱 const,只能对指针和引用进行操作。
    所以,你可以发现一个神奇的事情:

     const int a=789 ;
        int &b = const_cast<int&>(a);
        int *c = const_cast<int*>(&a);
    
        cout<<"a="<<a<<endl;
        cout<<"&b="<<b<<endl;
        cout<<"*c="<<*c<<endl;
        cout << "&a="<<&a<<endl;
        cout << "&b="<<&b<<endl;
        cout << "c="<<c<<endl;
        cout<<endl;
        b = 987;
        *c = 999;
        cout << "a="<<a<<endl;
        cout << "b="<<b<<endl;
        cout << "*c="<<*c<<endl;
        cout << "&a="<<&a<<endl;
        cout << "&b="<<&b<<endl;
        cout << "c="<<c<<endl;

    非常好玩,
    然后对于这道题,
    因为数组是指针的,
    所以还是可以解决的,
    我的做法:

     const double arr[3] = {1.2,3.3,4.5};
        int i;
        for(i=0;i<3;++i)
            cout<<arr[i]<<" ";
        cout<<endl;
    
        double& temp = const_cast<double&>(arr[0]);
    
        for(i=0;i<3;++i)
            cout<<arr[i]<<" ";
        cout<<endl;

    用了个中间变量来改,直接改没成功。。
    希望能帮到你呀~

    2019-07-17 18:54:10
    赞同 展开评论 打赏
问答分类:
C++
问答标签:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载