Коллеги, объясните, как оно работает (если можно, со ссылками на документацию)
Почему функция
MyClass& func(const MyClass &rhs)
{
Myclass tmp = rhs; // Конструктор копии определен корректно
// преобразование tmp для заданных целей
return tmp;
}
а функция
MyClass func(const MyClass &rhs)
{
Myclass tmp = rhs; // Конструктор копии определен корректно
// преобразование tmp для заданных целей
return tmp;
}
Правильно ли я понимаю, что return tmp вызывает конструктор копии, прежде, чем разрушить tmp по выходу из функции? Или это как-то по-другому работает? Или обе версии неправильные?