<>
指出,编译器应该选择模板函数,此时编译器会查看调用函数时的实参类型来进行实例化,也属于模板函数的隐式实例化;第四次调用的 <int>
显式指出,编译器应该使用模板函数的 int
实例化版本,此时属于模板函数的显式实例化 。
#include <iostream>//函数#1template<class T>T lesser(T a, T b){return a < b ? a : b;}//函数#2int lesser(int a, int b){a = a < 0 ? -a : a;b = b < 0 ? -b : b;return a < b ? a : b;}//函数调用int main(){using namespace std;int m = 20;int n = -30;double x = 15.5;double y = 25.9;//使用#2 , 结果为20cout << lesser(m, n) << endl;//使用#1,double隐式实例化,结果为15.5cout << lesser(x, y) << endl;//使用#1,int隐式实例化,结果为-30cout << lesser<>(m, n) << endl;//使用#1,int显式实例化 , 结果为15cout << lesser<int>(x, y) << endl;return 0;}
【C++ 函数重载解析策略】
推荐阅读
- 【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较
- 【C++】spdlog光速入门,C++logger最简单最快的库
- 基于QT和C++实现的翻金币游戏
- 【C++】从零开始的CS:GO逆向分析3——写出一个透视
- 钩子 【pytest官方文档】解读-插件开发之hooks 函数
- C++ 使用栈求解中缀、后缀表达式的值
- <三>从编译器角度理解C++代码编译和链接原理
- Java 最长公共前缀
- windows C++ 异常调用栈简析
- Java Style的C++容器流式处理类