c++ - 引用被重新安置在这里还是别的什么

标签 c++ reference

今天我才知道引用不是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 是一个引用。为什么允许重新分配(因为不能重新绑定(bind)引用)。这里发生了什么。

最佳答案

auto 不生成引用类型。表达式 z.at(1)int 类型的左值,因此 ref 也是一个 int。

(如果你想要引用,你必须说 auto &auto && (或者在 C++14 中 decltype(auto)).)

关于c++ - 引用被重新安置在这里还是别的什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17688658/

相关文章:

C#引用变量使用说明

java - HashSet 是否制作添加对象的内部副本?

c++ - 从 int 到 float 的转换是否比 static_cast<float> 更优雅?

c# - 缓入缓出动画公式

c++ - C++ 接口(interface)中的静态反序列化工厂

c++ - 根据 C++ 草案,运行时数组在堆栈上的界限

ios - 快速引用数组的通用变量

c++ - 为什么 C++ 中没有 const 引用,就像 const 指针一样?

c++ - 为什么可以在 C++ 的函数内返回对象引用?

c++ - 从现有 cmake 应用程序导入的 Netbeans 项目无法在 Windows 上生成文件系统错误