1、const 全局变量在只读存储区,调用const_cast修改const全局变量的常量性并修改其值对出现写入错误;而对于局部变量则没有事,修改常量性后可以实现修改。
但是,由于const变量是在编译时确定的,在运行时并没有从内存中读取const变量的值,而是直接从寄存器读取的,因此即使用const_cast去除了const变量的常量性,并修改了变量的值,输出仍为原始值
复制代码
1
2
3
4
5
6
7
8
9
void main(void)
{
const int q=10;
const int *p = &q;
int *m = const_cast<int*>(p);
*m = 40;
int a = q;
cout<<a;
}
此时,q的值已经是40,但是代码输出值为10,即a=10。
可以通过对const变量加volatile,使每次使用q时都从内存中读取其值,从而得到正确结果
最后
以上就是粗犷微笑最近收集整理的关于const 全局变量的全部内容,更多相关const内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复