как они живут?
Конкретно. Можно ли делать так:
struct foo{
string_view text_;
};
foo make_foo(){
return {"text"};
}
По видимому аналогично
const char* get_foo_text(){
return "text";
}
Этот "text" гарантировано живёт всю жизнь программы? Или есть нюансы?
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
struct foo и функцией make_foo(), строка "text" будет храниться в памяти как литеральная строка и будет доступна на протяжении всего времени выполнения программы
Всё ещё неправильно :( Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
Да, можно, гарантированно. Строковые литералы - это просто константы в коде
Один нюанс - если это std::string view, надо посмотреть, умеет ли он так инититься и второе - тут мина закладывается, через этот text_ ничего нельзя будет менять, только читать
Обсуждают сегодня