码迷,mamicode.com
首页 > 其他好文 > 详细

改变const值的方式

时间:2014-09-10 10:53:30      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:c++

一种改变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值的方式

标签:c++

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!