在C ++中分配对变量的引用

时间:2014-12-06 15:03:18

标签: c++ reference

我的问题是为什么可以为未声明为引用的变量分配引用?

谢谢。

int &testRef(int &x)
{
    return ++x;
}

int main()
{
    int x = 1, y;
    y = testRef(x); // assigning testRef(x) which is int& to y which is int
    return 0;
}

3 个答案:

答案 0 :(得分:5)

y = testRef(x);将获取testRef返回的引用的值副本。如果要对返回值进行后续修改,这可能很有用。

如果testRef要返回const引用,那么如果您想更改返回值,则别无选择,只能获取值副本。这有助于实现计划稳定性。

答案 1 :(得分:1)

将引用视为别名,只是某个名称。您没有分配参考。您指定了引用名称(或者更确切地说,引用它)的内容。

答案 2 :(得分:0)

当通过引用传递时,实际上没有创建任何新内容,只创建了一个指向同一对象的原始对象的别名。 从字面上看,' x' function()中的参数和最初传递的x是相同的。

顺便说一下

int &testRef(int &x)
{
    return ++x;
}

通过引用返回可以分配rvalue:类似

int main()
{
    int x = 1, y;
    y = testRef(x); 
     testRef(y) = 5;  //by doing this you are assigning y as 5 
    std::cout<<y;
    return 0;
}