0

我在我的书中复制了这个程序。但我不明白这个程序中的一行。这一行是

朋友无效交换(class_1 &,class_2 &);

我的问题是为什么在括号中使用 & 运算符?请解释。

#include <iostream>

using namespace std;


class class_2;

class class_1{
    int valuel;

    public:
    void indata(int a){valuel=a;}
    void display (void){cout<<valuel<<"\n";}
    friend void exchange (class_1&, class_2&);
};

class class_2{
    int valuel_2;
    public:

    void indata(int a){valuel_2=a;}
    void display (void){cout<<valuel_2<<"\n";}
    friend void exchange (class_1&, class_2&);
};

void exchange (class_1 &x,class_2 &y){
    int temp=x.valuel;
    x.valuel=y.valuel_2;
    y.valuel_2=temp;
}

int main()
{
   class_1 c1;
   class_2 c2;

   c1.indata(100);
   c2.indata(200);
   cout <<"values before exchange"<<"\n";

   c1.display();
   c2.display();

   exchange(c1,c2);
   cout <<"values after exchange"<<"\n";
   c1.display();
   c2.display();
   return 0;
}
4

2 回答 2

0

“&”表示这两个参数是引用。请参阅C++ 中的指针变量和引用变量有什么区别?了解更多信息。

于 2014-04-17T16:18:25.437 回答
0

通过引用传递值,您的exchange方法将能够修改内存中的对象。尝试不使用&,看看会发生什么!您的exchange()方法将取而代之的是您传入的对象的副本,但不会实际修改存储在内存中的数据;换句话说,离开时发生的更改是该方法&本地更改,因为该方法正在获取副本而不是对该对象的内存位置的引用

于 2014-04-17T16:36:49.413 回答