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对象,然后通过显式抛弃它来对其进行修改,从而破坏了类型系统。因此,您调用了未定义的行为,这意味着任何事情都可能发生。

07-27 13:25