c++ - 当函数返回引用写在 LHS 上时无法预测输出

标签 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. “2010”
  2. “2020”

这取决于右边的x是在调用左边的swap之前还是之后读取的。

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

关于c++ - 当函数返回引用写在 LHS 上时无法预测输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25980494/

相关文章:

c++ - += C++ 中的运算符,用于将作者添加到列表

c++ - 如何重新排序功能参数?

c++ - 两平方和分解计数

c++ - 使用声明实现这个抽象类

c++ - 奇怪的 C++ 语法

c++ - 使用数组模板参数返回

c# - 添加对 VS2008 项目的 VB6 ActiveX DLL 引用

c# - 使用 method<Type>(parameters) 的调用方法

scala - 在Scala中是否可能有{key-> function call}的映射?

c++ - 为什么可以接受对不同类型变量的常量引用?