const_cast用于去除的常量性:
const int a = 1;
int *pa = const_cast<int*>(&a); //去除a的常量性
*pa = 2; //常量性去除后,可以通过pa进行赋值
但需要注意的是,如果常量变量定义在函数的栈上,那么是通过const_cast去除常量性后,是可以对其重新赋值的:
int main()
{
const int a = 1; //a定义在函数的栈上
const int& ra = a;
cout<<"a="<<ra<<" addr="<<&ra<<endl; //输出:a=1 addr=0x62fe0c
int *pa = const_cast<int*>(&a); //通过const_cast去除常量性
*pa = 2; //通过pa对a赋值
cout<<"a="<<ra<<" addr="<<&ra<&l