правила const_cast в с ++ - PullRequest
0 голосов
/ 05 июня 2018
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 типов, перечисленных в коде выше?

1 Ответ

0 голосов
/ 05 июня 2018

Поведение const_cast<int&>(f1.A) = 4 и const_cast<int&>(f2.B) = 4 равно undefined .

Если объект изначально определен как const, и вы отбрасываете этоconst -ness и пытаются изменить объект, поведение: undefined .

...