Не возвращайте ссылки (или указатели) на локальные переменные
Эта проблема проявляется и в Си, где вы не можете вернуть указатель на локальную переменную. Не возвращайте ссылку на объект, который не существует после этого возврата. Следующий код не работает:
some_class f()
{
some_class x;
// ...
return x;
}
Действительной проблемой здесь является синтаксис Си++. Оператор return может располагаться на отдалении от определения возвращаемой величины. Единственный способ узнать, что на самом деле делает return x, —
это взглянуть на заголовок функции и посмотреть, возвращает она ссылку,
или нет.