Я чувствую, что этот вопрос достаточно важен, чтобы быть где-то там, но я не могу найти ответа на него.
Предположим, что у меня есть этот код:
//class member function
std::map< std::string, std::string > myMap;
const std::map< std::string, std::string >& bar()
{
return myMap;
}
void myFunc( std::map< std::string, std::string >& foo1 )
{
foo1 = bar();
std::map< std::string, std::string >& foo2 = bar();
}
Я понимаю, что если я начну использовать foo2, так как foo2 является ссылкой на тот же экземпляр, что и возвращаемый bar(), все, что я делаю с foo2, будет отражено в myMap. Но как насчет foo1? Получает ли foo1 копию myMap или он также указывает на тот же экземпляр, что и bar()? Стандартная библиотека С++ говорит, что оператор присваивания для std:: map скопирует элементы, но тогда означает ли это, что оператор присваивания действительно не вызывается в объявлении foo2?
Спасибо!