Ответ 1
полностью зависит от того, что происходит со строкой, где находится функция. Он должен быть сохранен для ссылки.
если у вас есть переменная в текущей функции, скажем, объект, к которому принадлежит функция.
class yourClass {
string a;
string const & yourFunction(string b) {
a = b;
return a;
}
}
Кроме того, не слишком уверен, что произойдет, если вы просто вернете директиву "somestring", но когда вы выполните аналогичную функцию с параметрами, она будет выглядеть следующим образом:
void test(const string& value);
Если вы затем передадите "someString", это не будет обрабатываться как ссылка, просто значение. Если вы удалите "const", вы получите проблемы и не сможете передать "someString" в качестве значения.