c++ - 为什么我得到 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 参数的函数在调用时正在执行。为什么呢?
解决方案
当您的代码正在编译时,取决于参数的类型和参数的数量,编译器会f(7)
在移动到Template
函数之前找到最相关的函数来响应您的函数调用。在这种情况下,最相关的功能是void f(const int&i)
输出 2。
推荐阅读
- r - 将一个数据框中的一系列文本搜索到另一个数据框中
- javascript - 反应导航,无法将标题传递给标题
- xcode - 安装 React-Native 后,运行 Clang++ 编译文件会引发“dyld:mach-o,但为模拟器(不是 macOS)构建”
- c++ - 复制构造函数替换移动构造函数?
- python - 使用 tf.RunOptions 的分段错误
- html - gmail中的电子邮件签名问题
- php - 是否可以在 symfony 4 表单集合中动态生成选择?
- c - 在将文件写入 SD 卡时实现故障/安全方法
- mysql - CakePHP:使用包含查找关联数据
- jenkins - 詹金斯 git 凭证在阶段工作,而不是在下一个