• 全部
  • 问答

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

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')也可以调用?

谢谢!
...全文
7 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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等或自定义类型。
回复
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)

尽管这样写可能不太合适是愚蠢的,但是这样写可以吗?我想问问!
回复
相关推荐
发帖
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2003-03-26 08:49
社区公告
暂无公告