У меня есть следующий метод, который возвращает локальный объявленный объект по значению:
Human Human::getLocalDeclaredHuman() {
Human human;
std::cout << &human << std::endl;
return human;
}
И я называю этот метод:
Human a;
Human b = a.getLocalDeclaredHuman();
std::cout << &b << std::endl;
std::cout << b.getName() << std::endl;
и это вывод работающей программы:
0x22fe58
0x22fe58
Джон Доу
Таким образом, переменная human, объявленная в методе local, имеет тот же адрес, что и переменная b. Я думал, что возврат по значению создаст копию объекта, и что у объекта b есть другой адрес, такой как объект human, который объявлен локально.
Мой вопрос:
Если здесь b и человек имеют один и тот же адрес, где разница между возвратом по значению и возвратом по ссылке?