如何调用'按值调用'和'按引用调用'重载函数?

Zee*_*ter 1 c++ overloading reference lvalue

我有两个重载函数,一个是"按值调用",另一个是"按引用调用".

int f (int a)
{
    //code
}

int f (int &a)
{
    //code
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我通过const int,它会调用"按值传递"功能,为什么?

const int a=3;
f(a);//calls the call by value function.Why?
Run Code Online (Sandbox Code Playgroud)

Rak*_*111 7

因为aconst int,所以告诉编译器你不想修改a.a不能通过引用传递(仅限于const&),因为如果它是引用,f可以修改它,但f不允许因为aconst.

所以合法的唯一重载就是价值传递 - int f(int a).