// 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