Изменение значения константной переменной в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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