Учитывая этот код (из моего последнего сообщения здесь):
const int j = 5; // constant object
const int *p = &j; // `p` is a const access path to `j`
int *q = const_cast<int *>(p); // `q` is a non-const access path to `j`
*q = 10;
cout << *q << endl;
Вывод: 10
Предполагается, что это так? Я думал, что этот код должен был привести к неопределенному поведению, поскольку j
является константой. Я ошибся ?
Спасибо
10\n
на консоль? и ответ Да. - person Ben Voigt   schedule 14.07.2012Even though const_cast may remove constness from any pointer or reference, using the resulting pointer or reference to write to an object that was declared const invokes undefined behavior.
Так что это неопределенное поведение. Источник - person Olwaro   schedule 14.07.2012