今天我才知道引用不是reseatable 考虑一下代码:
map<int,int> z;
z.insert(make_pair(1,2));
z.insert(make_pair(3,5));
z.insert(make_pair(4,6));
auto ref = z.at(1);
ref = z.at(3);
std::map::at
返回对所请求元素的映射值的引用,表示ref是引用。为什么允许重新分配(因为引用不能重新绑定)。这里发生了什么。
答案 0 :(得分:2)
auto
不会生成引用类型。表达式z.at(1)
是int
类型的左值,因此ref
也是一个整数。
(如果您想要参考,则必须说auto &
或auto &&
(或在C ++ 14 decltype(auto)
中)。)