首页 > 其他 > 详细

改变const值的方式

时间:2014-09-10 10:53:30      阅读:325      评论:0      收藏:0      [点我收藏+]
一种改变const值的方式是使用const_cast类型转换符,将const变量转换为一个该变量的引用,通过这个引用去改变值,这种方法的实质就是用地址改变内存的值。如下实例:

        struct SA {
        int i = 0;
     };

       const SA sa;
       cout << sa.i << endl;
       SA &sb = const_cast<SA&>(sa);
       sb.i = 11;
       cout << sa.i << endl;


上述这种方式中对象sa是存储在内存中的,并且这个内存在系统中是可更改的,所以我们 可以利用上述这种方式来做改变。
考虑下面的实例:
        const int i = 0;
         int &b = const_cast<int   &>(i);
        b = 10;
        cout << i << endl;
        cout << b << endl;


结果将不如人所料,i输出的值还是0,b输出的值是10.这是什么原因呢?这主要是因为C++编译器中const的实现机制的问题。在C++中,const会被看成是一个常量,所以像数值,字符串这类的值,编译器都会将其放入文字常量区,这也是python中的处理方式。当声明一个引用类型的b时,编译器为他在内存中(栈,不是文字常量区)分配空间,因此是可以改变的。那么我们怎么改变i的值呢?想办法获取此时0在文字常量区的地址,将其改变会不会是一种方式呢?

改变const值的方式

原文:http://blog.csdn.net/wwwdongzi/article/details/39177945

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!