同一地址,出现2个不同值。
我在测试 const_cast,遇到一个问题,如下:#include<iostream>
using namespace std;
void main()
{
const int j = 10;
const int *i = &j;
cout<<"*i="<<*i<<endl;
cout<<"i="<<i<<endl;
int *p = const_cast<int*>(i);
*p=*p+1;
cout<<"j="<<j<<endl;
cout<<"*i="<<*i<<endl;
cout<<"*p="<<*p<<endl;
cout<<"i="<<i<<endl;
cout<<"p="<<p<<endl;
}
结果是:
*i=10
i=0012FF7C
j=10
*i=11
*p=11
i=0012FF7C
p=0012FF7C
Press any key to continue
因为j是const,无法改变,这个我知道,我使用了一个指向const对象的指针,于是声明了*i;为了测试 const_cast,我又声明了一个指针*p;我是这么认为的,*p指向的其实也可以说是j,在结果中,的确指向的是j,因为内存地址一样,可是,在输出此地址上的数值时,却产生了不一致,试问各位高手是怎么回事,小弟实在不知其祥!
[[it] 本帖最后由 独孤剑魔 于 2008-9-5 19:15 编辑 [/it]]