暂时想到两种用法,结果有不同。
//第一种
int x = 5 ;
const int cX1 = x ;
int *pY = const_cast<int *> (&cX1) ;
*pY = 7 ; //如果x和cX1都是全局变量
//*pY=7不会导致segment fault(x在静态存储区)
int z = *X1 ; //z = 7;反汇编中取x的值,然后赋值给z
//第二种
const int cX2 = 5 ;
pY = const_cast<int *> (&cX2) ;
*pY = 7 ; //在知乎上看到一点(http://www.zhihu.com/question/21792567)
//如果cX2是全局变量,那么*pY=7会导致segment fault(5在常量区)
z = cX2 ; //z = 5;反汇编中直接将5赋值给z
以上都是在vs2015上运行的结果。