Код: Выделить всё
// 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
Подробнее здесь: https://stackoverflow.com/questions/796 ... e-by-value