#include <iostream>
using namespace std;
//第一版
int Max(int& a, int& b) {
cout << "调用了int Max(int& a, int& b)普通函数" << endl;
return a > b ? a : b;
}
template <typename T>
T Max(T a, T b) {
cout << "调用了T Max(T a, T b)模板函数" << endl;
return a > b ? a : b;
}
//第二版
int Max1(int& a, int& b) {
cout << "调用了int Max1(int& a, int& b)普通函数" << endl;
return a > b ? a : b;
}
template <typename T1, typename T2>
T1 Max1(T1 a, T2 b) {
cout << "调用了T1 Max1(T1 a, T2 b)模板函数" << endl;
return a > b ? a : b;
}
template <typename T>
T Max(T a, T b, T c) {
cout << "调用了T Max(T a, T b, T c)模板函数" << endl;
return Max(Max(a, b), c);
}
void main(void) {
int a = 1;
int b = 2;
char c = 'j';
//当模板函数和普通函数都符合调用时,优先选择普通函数
//Max(a, b);
//如果显式的使用函数模板,则使用<>类型列表
//Max<>(a, b);
//如果模板函数会产生更好的匹配,使用函数模板
//Max(1.0, 2.0);
//Max1(c, a);
Max(3.0, 4.0, 5.0);
system("pause");
return;
}
模板函数和函数重载
最新推荐文章于 2024-07-12 16:34:36 发布