【发布时间】:2014-09-16 17:06:05
【问题描述】:
我有一段程序如下图:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
const int i = 100;
cout<<"const i::"<<i<<endl;
const_cast<int&>(i) = 200;
cout<<"const i after cast::"<<i<<endl;
return EXIT_SUCCESS;
}
但是i的值还是100。难道const_cast不应该改变i的值吗?
【问题讨论】:
-
我要在这里冒昧地说一个常数,根据定义,不能更改。它是恒定的。
-
因为尝试这样做是未定义的行为(但我敢打赌这是重复的)。
-
"
const_cast不应该改变i的值吗?"不,如果您只有一个常量引用,它允许您更改非常量值;但不应该改变一个常数值。否则它不会是恒定的。
标签: c++ const-cast