Junior — Senior
Методы рефакторинга, возвращающие ссылки на временные объекты
livecode
Условие задачи
В классе ForInterview функции get_ref() в настоящее время возвращают ссылку на локально созданный экземпляр, что приводит к висячей ссылке. Переделайте реализацию так, чтобы возвращаемая ссылка оставалась действительной после выхода из функции.
class ForInterview {
public:
struct S {
int x = 1;
};
const S& get_ref() const {
S s;
return s;
}
S& get_ref() {
S s;
return s;
}
void run() {
const S& cs = get_ref();
S& s = get_ref();
std::cout << cs.x;
std::cout << s.x;
}
};