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
}
为什么?
谢谢。
答案 0 :(得分:3)
来自C ++ 03标准的第7.1.5.1/4节:
除了可以修改声明为
mutable
(7.1.1)的任何类成员之外,任何在其生命周期内修改const
对象的尝试(3.8)都会导致未定义的行为。
您将bNew
声明为const
对象,然后通过明确地将其转换为修改它来破坏类型系统。因此,您调用了未定义的行为,这意味着任何都可能发生。