可能重复:
const_cast 安全吗?
显然我永远不会编写这段代码,但它是一个非常简单的例子,它是在一个真实的程序中出现的东西。
#include <iostream>
void change(const int& data)
{
int& data2 = const_cast<int&>(data);
data2 = 100;
}
int main()
{
int thing = 123;
change(thing);
std::cout << thing << "\n";
}
这是明确定义的行为,这会改变所引用的数据,还是允许编译器假设因为它传递了一个const int&
函数不能更改传入的值并相应地生成代码?
编辑:我在输出更改后的值 100 时尝试过的所有编译器。
这似乎与Can C++ 编译器假设 const bool & value 不会改变?所以我很高兴关闭这个。