重载“按值调用”和“按引用调用”功能?[复制]

Overload 'call by value ' and 'call by reference' function? [duplicate]

提问人:Gabriel Costa 提问时间:11/14/2023 最后编辑:Gabriel Costa 更新时间:11/14/2023 访问量:81

问:

我想为具有两个重载的函数定义一个名称“f”,一个是“按值调用”,另一个是“按引用调用”

#include <iostream>

using namespace std;

int f (int a)
{
    return a;
}

int f (int &a)
{
    return a;
}

int main()
{
    int x = 4;
    cout << f(x); // f would be call by reference
    cout << f(5); // f would be call by value

    return 0;
}

编译上述代码时,抛出以下错误:main.cpp:26:14:错误:重载“f(int&)”的调用不明确

我理解为什么在这种情况下调用是模棱两可的,因为调用既可以通过引用也可以通过值来完成,但是如果是变量,有没有办法默认通过引用调用?ff(x)f(x)x

C++ 重载 按引用传递 的值调用

评论


答: 暂无答案