由const_cast引发的疑惑...
void main(){
const int a=1;
int &b=const_cast<int&>(a);
cout<<a<<endl;
b=2;
cout<<&b<<":"<<*(&b)<<endl;
cout<<&a<<":"<<*(&a)<<endl;
}
输出:
1
0012FF28:2
0012FF28:1
为什么相同的地址里的取值会不同,到底const_cast有什么魔力?
ls请看清楚我的问题,我是说,相同地址0012FF28,取值会不同???
用const定义的变量 如果不去引用它 这个变量只存在符号表中
但如果你引用它了 它就会在内存中分配一个临时存储区
const int a=1; //没有引用前,内存不分配变量空间,只存在符号表里
int &b=const_cast<int&>(a); //b是a的引用,即a,b指向同一个地址
b=2; //临时存储区里的值发生变化
cout<<&b<<":"<<*(&b)<<endl; //b的地址里的值 ,肯定是2了
cout<<&a<<":"<<*(&a)<<endl; //a仅仅存储在符号表里,值不能改变还是1,但你要调用他的地址(引用)就是临时分配的那个存储区了,即b的地址