我有两个重载函数,一个是“按值调用”,另一个是“按引用调用”。
int f (int a)
{
//code
}
int f (int &a)
{
//code
}
但是如果我传递 const int
,它会调用“按值传递”函数,为什么?
const int a=3;
f(a);//calls the call by value function.Why?
最佳答案
因为 a
是一个 const int
,所以这告诉编译器您不想修改 a
。 a
不能通过引用传递(只能通过const&
),因为如果是引用,f
可以修改它,但是f
是不允许的,因为 a
是 const
。
所以唯一合法的重载是传值一 - int f(int a)
。
关于c++ - 如何调用 'call by value '和 'call by reference'重载函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37375788/