#include<iostream>
using namespace std;
template<typename T>
T min(T a, T b, T c) {
if (a > b)a = b;
if (a > c)a = c;
return a;
}
int main() {
int a = 1,b = 2,c = 3;
cout << min(a, b, c) << endl;
long long a1 = 10000000000, b1 = 1000000000000, c1 = 10000000000000;
cout << (a1, b1, c1) << endl;
return 0;
}
函数模板,也就是通用函数的形式,写出一个功能,当参数类型不同的时候都可以调动该功能,形参的个数相同而类型不同,某些方面上看来比函数重载方便。
可以先把函数模板写成某个变量类型的形式,然后再改成虚拟类型。
#include<iostream>
using namespace std;
int min(int a, int b, int c) {
if (a > b)a = b;
if (a > c)a = c;
return a;
}
long long min(long long a, long long b, long long c) {
if (a > b)a = b;
if (a > c)a = c;
return a;
}
double min(double a, double b) {
if(a-b>(1e-5))a=b;
return a;
}
int main() {
int a = 1, b = 2, c = 3;
cout << min(a, b, c) << endl;
long long a1 = 100, b1 = 200, c1 = 300;
cout << min(a1, b1, c1) << endl;
double a2 = 1.1, b2 = 2.2;
cout << min(a2, b2) << endl;
return 0;
}
函数重载,同一个函数名定义多个函数,形参的个数和类型都可以不一样。