您的位置:首页 > 其它

const_cast函数将常量变成非常量,保护现场

2015-05-08 17:09 246 查看
void test_const()

{

const int a =1;

int *p = const_cast<int*>(&a);

*p = 2;

const bool isequal = p==&a;

cout<<endl;

cout<<a<<"\t"<<*p<<"\t"<<isequal<<endl;

}

1 2 1

使用const_cast<>(a)这个函数,会保存const a的值(保护现场,汇编的时候,const_cast把a压到栈中了),使用p来输出没有问题,但是使用a的时候会恢复现场,从栈中再取出a。

即:*p和a的地址都一样,而且这个地址内的值也变化了,只是使用a的时候,会把栈中的a取出来使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: