void my_sqrt(const int &x)
{
const_cast<int &>(x) = x * x; //去掉了x的const限制,否则不能更改x的值
std::cout<<"x = "<<x<<std::endl;
}
int main(void)
{
int a = 5;
const int b = 5;
my_sqrt(a);
std::cout<<"a = "<<a<<std::endl;
my_sqrt(b);
std::cout<<"b = "<<b<<std::endl;
return 0;
}
/*---- 输出结果---------
x = 25
a = 25
x = 25
b = 5
-----------------------*/
...全文
34710打赏收藏
const_cast的疑问
const_cast主要用来暂时解除const限制。 下面程序中 变量b 为什么没有被修改,调用函数 my_sqrt时,他的引用被修改了, 引用被修改了,为什么原来的值不能被改变呢 ? #include void my_sqrt(const int &x) { const_cast(x) = x * x; //去掉了x的const限制,否则不能更改x的值 std::cout<<"x = "<<x<<std::endl; } int main(void) { i