Может ли кто-нибудь объяснить это использование ссылок на С++

Возможный дубликат:
Глобальная константа string & плохо пахнет мне, действительно ли это безопасно?

Я наткнулся на следующий код и задался вопросом о его достоинствах

std::string const & thestring( "XYZ" );

Это тот факт, что он строит объект и ссылается на него ссылкой. Я привык видеть

std::string const theString( "XYZ" );

и задавался вопросом, в чем разница. Я достаточно рад, что объект не будет разрушен раньше, чем объект будет находиться в стеке вместе со ссылкой.

Ответ 1

полностью зависит от того, что происходит со строкой, где находится функция. Он должен быть сохранен для ссылки.

если у вас есть переменная в текущей функции, скажем, объект, к которому принадлежит функция.

class yourClass {
    string a; 

    string const & yourFunction(string b) {
        a = b;
        return a;
    }
}

Кроме того, не слишком уверен, что произойдет, если вы просто вернете директиву "somestring", но когда вы выполните аналогичную функцию с параметрами, она будет выглядеть следующим образом:

void test(const string& value);

Если вы затем передадите "someString", это не будет обрабатываться как ссылка, просто значение. Если вы удалите "const", вы получите проблемы и не сможете передать "someString" в качестве значения.