Я предполагаю, что узлы вашего связанного списка размещены в бесплатном хранилище (т.е. с new
).
Когда вы создаете объект с new
, он создается в бесплатном хранилище и существует до тех пор, пока вы не вызовете delete
для него. Вы можете сделать столько указателей на это местоположение, сколько захотите, и оно существует независимо от каких-либо вызовов функций, в которых оно могло быть выполнено. Поэтому в этой функции вы просто возвращаете указатель по значению на это место в бесплатном хранилище. Указатель - это просто число, которое является адресом объекта, например, возвращает int
по значению.
tl; dr: Вы, очевидно, знаете, что можете вернуть локальные объекты по значению, потому что копия сделана. В этой функции она возвращает копию указателя , которая указывает на местоположение в бесплатном хранилище, которое уничтожается только при вызове delete
с указателем на эту ячейку памяти.
Как еще одно примечание, вам, вероятно, не следует возвращать указатель на новый заголовок списка, а вместо этого брать указатель на заголовок списка по ссылке и изменять список таким образом, чтобы, если кто-то забудет назначить свой старый заголовок указатель на тот, который возвращается recurrsiveReverseList
, вещи не перепутаны.