问题描述
#include <iostream>
using namespace std;
int main() {
const int a = 20;
const int* b = &a;
cout<<"b* = "<<*b<<"\n";
int* c=const_cast<int *>(b);
*c=40;
cout<<"b* = "<<*b<<" a = "<<a;
return 0;
}
解决方法
您正在尝试修改 const
对象,此行为未定义。
来自 C++ spec 节 10.1.7.1 点 4
任何在其生命周期内修改 const 对象的尝试都会导致结果 在未定义的行为中。
const int* ciq = new const int (3); // initialized as required
int* iq = const_cast<int*>(ciq); // cast required
*iq = 4; // undefined: modifies a const object
,
a 的值没有改变,因为你正在使用 const int a = 20; 要更改 a 的值,您可以简单地声明 int a =20;