В вашем примере вы возвращаете ссылку на локальную переменную str
.Как только возвращается GetString()
, str
уничтожается, а ссылка недействительна (это относится к уничтоженному объекту).
Если вы возвращаете ссылку на объект, это должен быть объектэто все еще будет действительным после того, как функция вернется (например, она не может быть локальной переменной).
В этом конкретном случае вы должны вернуть str
по значению.Наиболее распространенное использование для возврата ссылки - для функций-членов, которые возвращают ссылку на переменную-член.