如何解决为什么不分配 c*=40 改变 a 的值?
#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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。