c++ - 如何调用 'call by value '和 'call by reference'重载函数?

标签 c++ reference overloading lvalue

我有两个重载函数,一个是“按值调用”,另一个是“按引用调用”。

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,所以这告诉编译器您不想修改 aa不能通过引用传递(只能通过const&),因为如果是引用,f可以修改它,但是f 是不允许的,因为 aconst

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

关于c++ - 如何调用 'call by value '和 'call by reference'重载函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37375788/

相关文章:

c++ - Visual C++ parallel_for + vector 访问冲突

c++ - 使用谷歌基准测试重现 vector 插入的性能结果

c++ - 使用 dynamic_cast 转换指针时抛出 bad_cast?

c++ - 我什么时候应该使用 const 呢?

c# - 关于引用类型的问题

c++ - 区分函数重载和函数覆盖

c++ - 当两个候选人具有相同的简历资格时,转换函数的初始化是否应该不明确?

c++ - Glew 运行时/链接器错误

c++ - 使用 std::copy 从随机数分布中复制

C++ 重载基于 shared_ptr 派生类的函数