首页 > 解决方案 > 为什么我得到 2 作为输出?

问题描述

#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 参数的函数在调用时正在执行。为什么呢?

标签: c++

解决方案


当您的代码正在编译时,取决于参数的类型和参数的数量,编译器会f(7)在移动到Template函数之前找到最相关的函数来响应您的函数调用。在这种情况下,最相关的功能是void f(const int&i)输出 2。


推荐阅读