VC ++ 2010问题:
const bool bNew = true;
const_cast<bool&>(bNew) = false;
if(bNew)//bNew is false here, but
{
int i = 0;//this line will be executed
}
为什么?
谢谢。
最佳答案
从C ++ 03标准的7.1.5.1/4节开始:
除了可以修改声明为mutable
(7.1.1)的任何类成员之外,任何在其生存期(3.8)内修改const
对象的尝试都将导致未定义的行为。
您将bNew
声明为const
对象,然后通过显式抛弃它来对其进行修改,从而破坏了类型系统。因此,您调用了未定义的行为,这意味着任何事情都可能发生。