返回信息流const int a=1;
int* b=const_cast<int*>(&a);
*b=2;
这时候为什么a的值并不会被改变?
原理上没想明白
谢谢
这是一条镜像帖。来源:北邮人论坛 / cpp / #13669同步于 2008/10/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
const问题
goome
2008/10/9镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
因为a is constant
【 在 goome () 的大作中提到: 】
: const int a=1;
: int* b=const_cast<int*>(&a);
: *b=2;
: ...................
【 在 purevirtual 的大作中提到: 】
: 因为a is constant
不太清楚的地方是const变量地址中的内容被改变的话const值如何维持的呢?
【 在 goome 的大作中提到: 】
: const int a=1;
: int* b=const_cast<int*>(&a);
: *b=2;
: ...................
事实是,在vc里,会被改变为2
【 在 rebirthatsix 的大作中提到: 】
: 事实是,在vc里,会被改变为2
我又在vc8.0里试了下
设了断点后发现在变量窗口中a确实变为了2
但是我cout<<a,发现输出的仍旧是1
并且加了个const int c=a;
发现到这里,变量窗口里a为2,c为1,cout的a和c都是1。
【 在 ericyosho 的大作中提到: 】
: 原因是这样的,因为你使用了const,因此实际上a这个变量的值在预编译阶段,已经被替换成了1。你可以看生成的汇编代码就知道了。
恩,看了一下,确实这样子,谢谢你