Sobes.tech
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;
    }
};