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

 我来答
FEIFEI123AICAO
2011-05-01 · 超过14用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:31.9万
展开全部
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<<max(-2,-3,0)<<endl;就出问题了。
所以用这种方法实现不了、
要真要实现把T max(T a, T b, T c=MAX);MIN为很大的数就行了。
#include<iostream>
using namespace std;
#define MAX 10000
template<class T>
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<<max(-2,-3,0)<<endl;
cout<<max(-2,-4)<<endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yinfengnong
2011-04-16 · TA获得超过5619个赞
知道大有可为答主
回答量:2344
采纳率:89%
帮助的人:2345万
展开全部
#include <stdio.h>

template <class T>
T max(T a, T b)
{
return a > b ? a : b;
}

template <class T>
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wentianzhou
2011-04-16
知道答主
回答量:22
采纳率:0%
帮助的人:0
展开全部
模版??不要模版啦,直接搞个同名不同参数的重载就行了!!
追问
是要编重载函数的,不过还是需要用模板重新实现
追答
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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式