Объявление ссылки на объект и операцию присваивания или

Мне кажется, что этот вопрос достаточно простой, чтобы быть где-то там, но я не могу найти на него ответ.

Предположим, У меня есть этот код:

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

Спасибо!

11
задан bhh1988 31 July 2011 в 00:21
поделиться