Меня спросили, как можно изменить значение переменной const.
Мой мой очевидный ответ был "указатели!"но я попробовал следующий кусок кода, и я озадачен ...
int main()
{
const int x = 5;
int *ptr = (int *)(&x); // "Cast away" the const-ness..
cout << "Value at " << ptr << ":"<< (*ptr) <<endl;
*ptr = 6;
cout << "Now the value of "<< ptr << " is: " << (*ptr) <<endl;
cout << "But the value of x is still " << x <<endl;
return 0;
}
И вывод был:
Value at <some address> :5
Now the value of <same address> is: 6
But the value of x is still 5
Теперь я не уверен, что именно возвращаетсяиз '& x', но это определенно не фактический адрес x, так как значение в x не изменилось!
Но с другой стороны, ptr содержит в начале значение x!Итак, что именно?
РЕДАКТИРОВАТЬ скомпилировано с VS2010