通过引用函数传递值的目的是什么

what is the purpose of passing a value by reference to a function?

本文关键字:是什么 引用 函数      更新时间:2023-10-16

下面是一个例子:

"阵列列表.cpp"

.....
...
..
void Stack::putSurname(employee& e)
{
cout<<"Insert SURNAME"<< endl;
cin >> e.surname;
}
......
....
..
void Stack::push(employee e)
{
pos++;
employeeList[pos] = e;
}
......
....
..

"ArrayList.h"

.......
.....
..
struct employee
{
string name, surname;
int age;
};
class Stack
{
public:
employee employeeList[1000];
int pos =-1;

public:
bool isEmpty();
void push(employee e);
....
......
........

在函数 putSurname 中,为什么我必须通过引用传递变量 employee 才能看到 employeeList 数组中的更改?

通过引用传递变量的目的是每次调用函数时该变量在内存中的位置都会更改,因此每次都分配不同的存储变量?

让我们想象一下以下场景。

employee emp;
employee& e2 = emp;

然后,e2成为emp的引用变量。您可以使用e2更改对象emp

考虑您的putSurname方法

void Stack::putSurname(employee& e)
{
    cout<<"Insert SURNAME"<< endl;
    cin >> e.surname;
}

您必须按如下所示调用该函数。

employee emp;
putSurname(emp);

然后在你的方法putSurname中,e将充当emp的引用变量,并且你对e所做的任何更改都将反映到emp

如果你的方法如下。

void Stack::putSurname(employee e)
{
    cout<<"Insert SURNAME"<< endl;
    cin >> e.surname;
}

您仍然可以将该方法调用为

employee emp;
putSurname(emp);

但在此处,该函数将创建 emp employee 对象的副本(按值传递)以执行其任务。然后你知道,因为它是一个副本,更改不会反映回emp.并且该变量将在函数执行后从堆栈中删除。然后,您将丢失所做的任何更改。

希望这有帮助。