Изменение значения константной переменной в C++ [дубликат]C++

Программы на C++. Форум разработчиков
Anonymous
Изменение значения константной переменной в C++ [дубликат]

Сообщение Anonymous »

Я пытаюсь изменить значение переменной, определенной как const int, как показано ниже:

Код: Выделить всё

const int w = 10;
int* wp = const_cast(&w);
*wp = 20;
Значение w не изменилось и было равно 10 даже после присвоения, хотя кажется, что и w, и wp указывают в ту же ячейку памяти. Но я могу изменить значение w, если оно определено, как показано ниже, при объявлении:

Код: Выделить всё

int i = 10;
const int w = i;
Если я изменю объявление i, чтобы оно было константным, как в:

Код: Выделить всё

const int i = 10;
значение w не меняется.
В первом случае, почему значение w не изменилось, хотя w и wp указывают на одну и ту же ячейку памяти (такое впечатление сложилось у меня, когда я распечатал их адреса).
Что есть ли разница для компилятора в том, что он обрабатывает эти два случая по-разному?
Есть ли способ убедиться, что w не теряет константность, независимо от способа определено?

Подробнее здесь: https://stackoverflow.com/questions/200 ... iable-in-c

Вернуться в «C++»