在 C++ 中通过引用传递参数时,它如何处理基于这些引用之一定义的变量。例如,我创建了一个函数 MyFunc1
,然后创建了一个备用函数 MyFunc2
来尝试实现相同的功能。在第二个中,有一个 y
是根据 x
定义的。就使用的内存量而言,y
是否也被视为引用?
int MyFunc1(const int &x, const int &a, const int ×_minus_one=1) {
if (times_minus_one == 1) {
return -x * a;
} else {
return x * a;
}
}
和
int MyFunc2(const int &x, const int &a, const int ×_minus_one=1) {
int y = x;
if (times_minus_one == 1) {
y = y * -1;
}
return y * a;
}
最佳答案
按照您在 MyFunc2 中定义 y 的方式,y 是原始变量的拷贝。这里拷贝正在栈上实例化,并将占用栈上的 sizeof(y) 内存。
例如,如果您将 y 定义为 const auto& y = x;
,那么 y 将是一个引用,它只是指针的大小。
关于c++ - 通过引用和内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23253524/