我知道以下关于参考无法预测返回参考的函数写入时的输出LHS
例如, int &ref=x;
然后ref和x是内存中相同位置的名称。 不像指针那样分配内存。
我正在用C++编写一个简单的交换程序,使用我成功编写的引用。
然后我决定尝试一下,当返回引用的函数是表达式的LHS时会发生什么,现在我无法预测下面的代码的输出。
#include<iostream.h>
int & swap(int &,int &); //function returns reference
void main()
{
int x=10,y=20;
int &ref1=x,&ref2=y;
swap(ref1,ref2)=x; //what happens here?
cout<<x<<y;
}
int & swap(int &ref1,int &ref2)
{
int temp;
temp=ref1; //swap
ref1=ref2; //code
ref2=temp; //here
return ref2; //tried out this(has nothing to do with swapping)
}
O/P 20 20
教育编写此类代码的人不要这样做。如果他们坚持不改变,找一种办法停止与他们合作。如果您是其中一员,请更改您的代码编写方式。 – 2014-09-22 19:01:24
内存可能被分配给引用。 – 2014-09-22 19:16:54