Сообщение Re: Время жизни временных объектов от 07.04.2021 9:31
Изменено 07.04.2021 11:33 Videoman
Re: Время жизни временных объектов
Здравствуйте, 10000.monkeys, Вы писали:
1M>Поправьте если не прав.
Не прав. Вот тут:
из s создается временный std::string который благополучно умирает при возврате std::unique_ptr<test>.
Замени const std::string& s на std::string s
P.S.
Если ты где-то прочитал что const ссылка продлевает время жизни объекта, то это совсем не тот случай. const ссылка будет оставаться валидной только при возврате объекта из функции по значению.
1M>Поправьте если не прав.
Не прав. Вот тут:
return std::make_unique<test>(s);
из s создается временный std::string который благополучно умирает при возврате std::unique_ptr<test>.
Замени const std::string& s на std::string s
P.S.
Если ты где-то прочитал что const ссылка продлевает время жизни объекта, то это совсем не тот случай. const ссылка будет оставаться валидной только при возврате объекта из функции по значению.
Re: Время жизни временных объектов
Здравствуйте, 10000.monkeys, Вы писали:
1M>Поправьте если не прав.
Не прав. Вот тут:
из s создается временный std::string который благополучно умирает при возврате std::unique_ptr<test>.
Замени const std::string& s на std::string s
P.S.
Если ты где-то прочитал что const ссылка продлевает время жизни объекта, то это совсем не тот случай. const ссылка будет оставаться валидной только при возврате объекта из функции по значению.
1M>Поправьте если не прав.
Не прав. Вот тут:
return std::make_unique<test>(s);
из s создается временный std::string который благополучно умирает при возврате std::unique_ptr<test>.
Замени const std::string& s на std::string s
struct test
{
test(const std::string& s) : s(s) {}
std::string s;
};
P.S.
Если ты где-то прочитал что const ссылка продлевает время жизни объекта, то это совсем не тот случай. const ссылка будет оставаться валидной только при возврате объекта из функции по значению.