在LHS上写入函数返回引用时无法预测输出

时间:2014-09-22 18:09:27

标签: c++ reference

我知道以下有关参考资料

例如。 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

1 个答案:

答案 0 :(得分:1)

有两种可能的结果:

  1. &#34; 2010&#34;
  2. &#34; 2020&#34;
  3. 这取决于在左侧调用x之前或之后是否读取了右侧的swap

    该标准不会禁止发生哪种情况,只是它们不是交错的。