Строковые литералы C ++ vs. const strings

Я знаю, что строковые литералы в C / C ++ имеют статическую продолжительность хранения , что означает, что они живут «вечно», т.е. по мере выполнения программы.

Таким образом, если у меня есть функция, которая вызывается очень часто и использует строковый литерал, например:

void foo(int val)
{
    std::stringstream s;
    s << val;
    lbl->set_label("Value: " + s.str());
}

где функция set_label принимает const std :: string & как параметр.

Следует ли мне использовать здесь const std :: string вместо строкового литерала или это не будет иметь никакого значения?

Мне нужно минимизировать потребление памяти во время выполнения насколько возможно.

редактировать:

Я хотел сравнить строковый литерал с префиксом const std :: string ("Value:"); , который инициализирован в каком-то заголовочном файле констант.

Кроме того, конкатенация здесь возвращает временное значение (назовем его Value: 42 , и постоянная ссылка на этот временный объект передается в функцию set_text () , я правильно?

Еще раз спасибо!

7
задан Victor Parmar 5 December 2010 в 23:04
поделиться