我尝试执行以下程序。
#include<iostream>
using namespace std;
int main()
{
const int a = 0;
cout << &a <<endl;
int* ptr = const_cast<int*>(&a);
*ptr = 2;
cout << ptr <<endl;
cout << *ptr <<endl;
cout << a <<endl;
return 0;
}
输出是:
0xbf92ebd8
0xbf92ebd8
2
0
据我所知, const_cast 是一个可变的,所以它可以被改变。当我显示 *ptr 时会反映更改,但更改不会反映在. 谁能解释一下?
编辑:感谢所有的答案。我知道我正在观察未定义的行为。而且,我最初对mutable和 *const_cast* 感到困惑。但是,你能告诉我所有的场景,我们都使用 const_cast 吗?