我觉得这个问题已经足够基本,可以在某处找到,但我似乎无法找到答案。声明对象和赋值运算符的引用
假设我有这样的代码:
//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的是同一个实例的引用作为什么吧()返回时,任何事情我foo2的办会体现在myMap中。但是foo1呢? foo1是否获取myMap的副本,或者它是否指向与bar()返回的实例相同的实例? C++标准库说std :: map的赋值操作符会将元素复制过来,但这是否意味着赋值操作符在foo2的声明中没有被真正调用?
谢谢!
+1谢谢,我自己学到了一些新东西。我只是做了一个测试,我确实是100%错误,你是对的= - ) – flumpb
好了!谢谢,我真正需要知道的是赋值运算符在foo1中调用,并且不在foo2中调用。很好的解释,谢谢! – bhh1988
@Luc如果可能,你能否理解为什么通常不使用引用变量?我对它们是什么有了更好的理解(感谢你的回答),但似乎编程人员普遍赞成对它的指示。它是多余的吗?范围有限? –