为什么我得到2作为输出?

时间:2018-06-06 04:41:17

标签: c++

#include<iostream>
using namespace std;
template<class T>
void f(T &i)
{
    cout<<"1";
}
void f(const int&i)
{
    cout<<"2";
}
int main()
{
    f(7);
}

我使用了模板功能和普通功能。但是带有const int参数的函数在被调用时正在执行。为什么会这样?

1 个答案:

答案 0 :(得分:0)

当您的代码正在编译时,取决于参数的类型和参数的数量,编译器将找到最相关的函数来响应函数调用f(7),然后再转到Template函数。在这种情况下,最相关的函数是void f(const int&i),所以你得到2作为输出。