Можно ли функция возвращать локальную ссылку по значению?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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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