Можно ли функция возвращать локальную ссылку по значению?C++

Программы на C++. Форум разработчиков
Anonymous
Можно ли функция возвращать локальную ссылку по значению?

Сообщение Anonymous »

Код ниже, по -видимому, работает просто нормально, так как функция возвращается по значению: < /p>
// return by value
std::string getFoo() {

const std::string& myStr = getBar();

return myStr;
}

std::string myString = getFoo();
std::string& myString = getFoo(); // this is bad - dangling pointer
< /code>
Я предполагаю, что приведенный ниже код также действителен только потому, что возвращаемое значение немедленно присваивается переменной, что устраняет опасность висящего указателя: < /p>
// return by reference
std::string& getFoo() {

const std::string& myStr = getBar();

return myStr;
}

std::string myString = getFoo();
std::string& myString = getFoo(); // this is bad - dangling pointer
< /code>
Являются ли эти примеры законными? Я что -то узнал. Пожалуйста, предположим, что возвращаемое значение-это объект Singleton, и все в порядке: < /p>
  • Если функция возвращается по ссылке, копия ссылки на синглтон не будет сделана-как ожидается. локации. Это ошибочное использование синглтона, на мой взгляд.


Подробнее здесь: https://stackoverflow.com/questions/796 ... e-by-value

Вернуться в «C++»