Почему выкидывается исключения при работе с указателем
Объясните почему Visual Studio кидает Exception thrown: write access violation.
char const* const_str = "Alex";
char* non_const_str=const_cast<char*>(const_str);
*non_const_str= 'y';
хотя oператор приведения const_cast по идее удаляет модификатор const.
Ответы (1 шт):
Автор решения: AR Hovsepyan
→ Ссылка
В данном случаи сбрасывание const вам ничего не даст, потому что "Alex" является литералом, а следовательно константным выражением, известным во время компиляции, и вы не можете во время выполнения изменять эту строку(любое константное выражение). А вот если тот же константный указатель const_str указывал бы на массив(или другой объект), то вы могли бы сбросить const квалификатор, получив не константный указатель, чтобы записать в строку:
char a[] = "Alex";
char const* const_str = a;
char* non_const_str = const_cast<char*>(const_str);
non_const_str[0] = 'y';
cout << *non_const_str;