T max(T a, T b, T c=0)
{
T n;
if(!c) c=a; //对于两个形参也可以,但是对于三个形参,在调用函数的时候如果a,b,c,中有一个为零,有意识的使其c!=0就OK~
n = a > b ? a : b;
n = n > c ? n : c;
return n;
}
这个是有问题的,要是a和b都是负数,而c为0时,象这样cout<
要真要实现把T max(T a, T b, T c=MAX);MIN为很大的数就行了。
#include
using namespace std;
#define MAX 10000
template
T max(T a, T b, T c=MAX)
{
T n;
if(c!=MAX)
{ n = a > b ? a : b;
n = n > c ? n : c;
}
else
n = a > b ? a : b;
return n;
}
void main()
{
cout<
#include
template
T max(T a, T b)
{
return a > b ? a : b;
}
template
T max(T a, T b, T c)
{
T n;
n = a > b ? a : b;
n = n > c ? n : c;
return n;
}
int main(int argc, char* argv[])
{
int a = 5, b = 2, c = 1, num;
num = max(a, b);
printf("max:%d\n", num);
c = 7;
num = max(a, b, c);
printf("max:%d\n", num);
double a1 = 5.235, b1 = 2.256, c1 = 1.1, num1;
num1 = max(a1, b1);
printf("max:%lf\n", num1);
b1 = 15.258;
num1 = max(a1, b1, c1);
printf("max:%lf\n", num1);
return 0;
}
模版??不要模版啦,直接搞个同名不同参数的重载就行了!!