Нет точно не возможно.И обычные переменные, такие как int x
, и ссылочные переменные, такие как int &y(...)
, и массивы не подлежат повторной настройке, т. Е. Они всегда будут использовать / указывать на один и тот же кусок памяти.
Для получения функциональностивам требуется, вам действительно нужно либо использовать указатель, либо абстракцию указателей.В противном случае это невозможно.
В качестве попытки объяснения, здесь идет речь (не совсем правильно и чрезвычайно упрощенно, но достаточно хорошо, чтобы понять идею):
Когда вы объявляете переменную наподобиеint x
, вы действительно просите компилятор связать x
с определенной областью памяти.Так, например, предположим, что x
связан с четырехбайтовым кодом, начинающимся с 0x439FC2
.Поскольку компилятор знает, что x
всегда должен ссылаться на 0x439FC2
, то любое использование x
действительно может быть заменено поиском этих ячеек памяти и загрузкой их в регистры, помещением их в стек или чем-либо еще.В любом случае, конечный результат заключается в том, что имя переменной x
в значительной степени заменяется числом 0x439FC2
.Поэтому причина, по которой вы не можете перемещать x
, заключается в том, что вы не можете сделать так, чтобы этот адрес памяти ссылался на другое место в памяти.
Опять же, это объяснение упрощено и не совсем верно, но это«интуитивный» способ рассуждения об автоматически назначаемых переменных.