更改常量变量的指针C++

问题描述:

看此程序:更改常量变量的指针C++

int main(){ 
    const int a_const=10; 
    int * const a=const_cast<int * const>(&a_const); 
    *a=5; 
} 

所以的a_const地址和指针a具有相同的值。 但改变a指向的值,不是a_const

程序的行为是undefined。它出现可能是未定义行为的表现。

通过使用作为const_cast的结果获得的非const指针(或引用),您不得试图更改声明为const的变量的值。

(如果它出现在这种情况下工作,尝试用只读字符串字面的等价物 - 这将导致很多平台的崩溃)

+1

鸡蛋里挑骨头:如果行为是*不确定*,你可以不说*它不可能*。根据定义,未定义的行为不能排除任何行为;) –

+0

@ el.pescado:是的,精度很重要。我修改了。 – Bathsheba