Я немного запутался в отношении семантики ссылок C ++.Предположим, у меня есть класс, который возвращает константную ссылку:
class foo
{
private:
std::map<int, int> stuff;
public:
const std::map<int, int>& getStuff()
{
return stuff;
}
};
И я использую его следующим образом:
foo f;
const std::map<int, int>& s = f.getStuff();
, что хорошо, но если бы я использовал его следующим образом:
foo f;
std::map<int, int> s = f.getStuff();
Что именно происходит?
Если я правильно понимаю, была возвращена постоянная ссылка на stuff
и создана копия в s
, на которой я могу нанести ущерб.Есть ли способ избежать этого?
edit:
Так что нет способа избежать вызова конструктора копирования здесь, для std :: map в любом случае ...