Я пытаюсь изменить значение переменной, которая определяется как int const, как показано ниже.
const int w = 10;
int* wp = const_cast <int*> (&w);
*wp = 20;
Значение w не изменилось и было равно 10 даже после назначения, хотя оно показывает, что оба w и wp указывают на одно и то же место памяти. Но я могу изменить значение w, если оно определено ниже, объявляя
int i = 10;
const int w = i;
Если я изменяю объявление i, чтобы сделать его const, как в
const int i = 10;
Значение w не изменяется.
В первом случае, как получилось, значение w не изменилось, хотя w и wp указывают на то же место в памяти [это было мое впечатление, которое я получаю, когда печатаю их адреса]
Какая разница с компилятором, что он рассматривает оба случая по-разному?
Есть ли способ убедиться, что w не потеряет константу, независимо от того, как она определена?