可能是重复的:
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++ compiler assume a const bool & value will not change?的重复问题,所以我很高兴关闭这个问题。
thing
本地变量,请提出该问题。 - cdhowie