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

Сообщение Re[3]: delete указателя на ссылку? от 19.11.2024 9:54

Изменено 19.11.2024 9:54 vsb

Re[3]: delete указателя на ссылку?
Здравствуйте, cppguard, Вы писали:

_>>И что вас смущает?


C>Как это работает? Допустим, с инициализацией всё в порядке, если не считать утечки памяти. Но как работает delete в данном случае?


Не там никакой утечки (ну если new исключение не кинет, но в эмбеддед исключения обычно отключены). Эти поля объявлены, как ссылки. Ссылка это одно и то же, что и указатель, просто разыменовывать по умолчанию не надо. Когда ты пишешь Point &r = *p, ссылке проставляется тот же адрес, что и у p и когда ты потом напишешь delete &r, в delete будет передан тот же адрес, что и был возвращён через new.
Re[3]: delete указателя на ссылку?
Здравствуйте, cppguard, Вы писали:

_>>И что вас смущает?


C>Как это работает? Допустим, с инициализацией всё в порядке, если не считать утечки памяти. Но как работает delete в данном случае?


Нет там никакой утечки (ну если new исключение не кинет, но в эмбеддед исключения обычно отключены). Эти поля объявлены, как ссылки. Ссылка это одно и то же, что и указатель, просто разыменовывать по умолчанию не надо. Когда ты пишешь Point &r = *p, ссылке проставляется тот же адрес, что и у p и когда ты потом напишешь delete &r, в delete будет передан тот же адрес, что и был возвращён через new.