我的问题是为什么可以为未声明为引用的变量分配引用?
谢谢。
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;
}
答案 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;
}