Информация об изменениях

Сообщение Re[6]: Не могу понять ссылки в C++ от 16.06.2024 19:51

Изменено 16.06.2024 19:54 Stanislav V. Zudin

Re[6]: Не могу понять ссылки в C++
Здравствуйте, r0nd, Вы писали:

SVZ>>«&a» возвращает, как и ожидается, ни что иное, как адрес объекта, на который ссылается ссылка.


R>Да. Именно это и было целью, однако там дальше есть ассемблерный код, который несмотря на идентичность вывода, адресуется по разным адресам. Что «несколько» противоречит утверждению, что у ссылки нет адреса в памяти. Я утверждаю что есть, ассемблер утверждает что есть. Как же быть?


В ассемблерном коде всё предельно просто.
Две переменные на стеке, в которые кладётся адрес переменной b.
Затем значения этих переменных перекладываются в регистры для вызова printf.
Видимо оптимизация выключена, потому что код совсем кондовый.
Re[6]: Не могу понять ссылки в C++
Здравствуйте, r0nd, Вы писали:

SVZ>>«&a» возвращает, как и ожидается, ни что иное, как адрес объекта, на который ссылается ссылка.


R>Да. Именно это и было целью, однако там дальше есть ассемблерный код, который несмотря на идентичность вывода, адресуется по разным адресам. Что «несколько» противоречит утверждению, что у ссылки нет адреса в памяти. Я утверждаю что есть, ассемблер утверждает что есть. Как же быть?


В ассемблерном коде всё предельно просто.
Две переменные на стеке, в которые кладётся адрес переменной b.
Затем значения этих переменных перекладываются в регистры для вызова printf.
Видимо оптимизация выключена, потому что код совсем кондовый.

Апд. Что касается адреса ссылки. Тебе привели пример, который доказывает, что у ссылки адреса не получить. Под капотом может быть что угодно. Иногда ссылка имеет физическое воплощение, но для программиста оно недоступно.