c++ - 通过引用和内存使用

标签 c++ function reference

在 C++ 中通过引用传递参数时,它如何处理基于这些引用之一定义的变量。例如,我创建了一个函数 MyFunc1,然后创建了一个备用函数 MyFunc2 来尝试实现相同的功能。在第二个中,有一个 y 是根据 x 定义的。就使用的内存量而言,y 是否也被视为引用?

int MyFunc1(const int &x, const int &a, const int &times_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 &times_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/

相关文章:

C++ vector 减少分配大小

c++ - 在 c/c++ 中的源文件之间共享变量的最佳策略是什么?

c - 在c中的另一个函数中分配结构

Excel VBA : Late binding reference

c++ - 枚举 "ghost values": what for?

c++ - sqlite3_open - 检查文件是否为 sqlite3 数据库时出现问题

python - 如何将函数作为参数传递而不执行它?

Javascript:函数绑定(bind)不适用于调用者

c++ - 在 header 中使用 & 将变量传递给函数

vb.net - 通用列表复制引用而不是创建复制列表