c ++中的const_cast规则

时间:2018-06-05 14:49:05

标签: c++ const shared-ptr const-cast

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行都表现出未定义的行为吗?如果f1f2是上面代码中列出的shared_ptr类型,行为会有所不同吗?

1 个答案:

答案 0 :(得分:15)

const_cast<int&>(f1.A) = 4 const_cast<int&>(f2.B) = 4的行为未定义

如果某个对象最初定义为const,并且您抛弃了const - ness 尝试修改该对象,则行为 undefined < / em>的