浮点对象与其值之间的差异

use*_*099 2 c++ reference object

关于以下代码段:

struct Pair{
    string name;
    double val;
}
vector<Pair> pairs;
double& value(const string& s)
{
   for (int i=0; i<pairs.size(); i++)
      if (s==pairs[i].name) return pairs[i].val;
   Pair p = {s,0};
   pairs.push_back(p);
   return pairs[pairs.size()-1].val;
}
Run Code Online (Sandbox Code Playgroud)

作者说

对于给定的参数字符串,value()查找相应的浮点对象(不是相应浮点对象的值); 然后它返回对它的引用.

"浮点对象"与其值之间的差异是什么?

Yoc*_*mer 5

该对象是包含该值的实际内存块.

因此,如果您获得引用,则可以替换其值,该值仍存储在原始向量中.

当然,如果您只是获取值(通过在没有&的情况下将返回值更改为double),您将无法更改向量中的实际值.