我是新手一个很菜的问题,请大家帮忙解答,谢谢!

breman44 2003-03-26 08:49:44
函数模板

#include <iostream.h>

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

void main(){
cout<<"Max(3,5) is"<<max(3,5)<<endl;
cout<<"Max('3','5')"<<max('3','5')<<endl;
}

这个程序中我有一些问题想请教大家,请帮忙解答

1.此函数中<class T>是类型形式参数表,类型形式参数表说明的是什么?
起什么作用?和形式参数表有什么关系?只可以有一个类型说明吗?
可不可以定义两个?

2.<class T>类型形式参数表中说明T为class,而且已经明确说明了,
可是调用的max(3,5)中的3和5 为int型,为什么int型也可以调用?
为什么max('3','5')也可以调用?

谢谢!
...全文
31 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueSky2008 2003-03-26
  • 打赏
  • 举报
回复
1.类型形式参数表说明的是 T 这个符号.说明T是类型参数.将来他可被int char 或class名代替.不然编译器怎知道T是什么东西.可以定义多个:<class T1,class T2...>

2.类型形式参数表中的class,只是一种语法定义,不代表T一定为class .
alexGIS 2003-03-26
  • 打赏
  • 举报
回复
写成这个样子或者会清楚一些:
template<class T>
T max( T a, T b )
{
return a>b?a:b;
}
ww2003 2003-03-26
  • 打赏
  • 举报
回复
1.类型形式参数表表示一种数据类型,可以同一般数据类型一样用在函数中的任何地方,可以有多个类型说明,如:<class T1,class T2...>

2.template<class T> T max(T a,T b)
{
return a>b?a:b;
}
参数a,b被定义为T型,所以表示a,b属同一类型,可以时int,float,double等或自定义类型。
LoveCreatesBeauty 2003-03-26
  • 打赏
  • 举报
回复
1. 是一个占位符,代表一个参数。可以有多个:
template <class T, class T2, int i> class TestClass {
public:
char buffer[i];
T testFunc(T* p1 ){}
T2 f(){}
};

2. 这就是template的特点,调用时基于参数生成一个实例。
sailor_Song 2003-03-26
  • 打赏
  • 举报
回复
up
skevin 2003-03-26
  • 打赏
  • 举报
回复
函数模板呀,可以使用不同的类型,建议你还是看看书吧。(随便一本C++的书上都有模板的章节,都很详细)
ww2003 2003-03-26
  • 打赏
  • 举报
回复
这是语法规则
langzi8818 2003-03-26
  • 打赏
  • 举报
回复
这是个函数模板,其模板参数表中可以定义N个参数,也可以这样<class t,int a>。在你的函数中,说明你要比较的是一个类型,int,float,string都可以,只要是一个类型就可以了
aitforever 2003-03-26
  • 打赏
  • 举报
回复
学习ing...
breman44 2003-03-26
  • 打赏
  • 举报
回复
为什么不能这样写啊?能讲讲吗?
ww2003 2003-03-26
  • 打赏
  • 举报
回复
不能这样写
breman44 2003-03-26
  • 打赏
  • 举报
回复
可不可一把<class T >换成<int>或者<float>或者<int,float>写成

template<int,float> int max(int a,float b)

尽管这样写可能不太合适是愚蠢的,但是这样写可以吗?我想问问!

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧