Мне кажется, что этот вопрос достаточно простой, чтобы быть где-то там, но я не могу найти на него ответ.
Предположим, У меня есть этот код:
//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 ()? Стандартная библиотека C ++ говорит, что оператор присваивания для std :: map будет копировать элементы, но значит ли это, что оператор присваивания на самом деле не вызывается в объявлении foo2?
Спасибо!