struct foo
{
const int A;
int B;
foo() : A(10), B(20) {}
};
void main()
{
foo f1;
const_cast<int&>(f1.A) = 4; //line 1
const foo f2;
const_cast<int&>(f2.B) = 4; //line 2
}
第1行和第2行都表现出未定义的行为吗?如果f1
和f2
是上面代码中列出的shared_ptr
类型,行为会有所不同吗?
答案 0 :(得分:15)
const_cast<int&>(f1.A) = 4
和 const_cast<int&>(f2.B) = 4
的行为未定义。
如果某个对象最初定义为const
,并且您抛弃了const
- ness 和尝试修改该对象,则行为 undefined < / em>的