用函数模板实现重载函数max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。用c++

2024-11-20 18:31:03
推荐回答(3个)
回答1:

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< cout<}

回答2:

#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;
}

回答3:

模版??不要模版啦,直接搞个同名不同参数的重载就行了!!