菜鸟C++模板类的使用问题

定义一个模板类后,在主函数中的声明中为什么要在类名和对象之间家个例如<int>或<double>的东西呢? 另外如果有这么一个句子
template <class T>
max3<T>::max3(T x,T y,T z):a(x),b(y),c(z){}
max3后面的<T>又是什么意思?

不说编程语言方面的,“模板”这个概念就是把能归类的东西统一地表述么。比如说简历模板有一份了,3个同学去填,每个人的信息都不一样,但是模板上规定的项目像名字、年龄大家都有。

C++里面的模板也是这个概念。T就相当于一个统称(这个你可以自己起其他名字),到实际调用时,就是更具体的一个名字了(比如int型、也可以是自己已经定义好的一个类型)

第二个问题:模板类的成员函数。
template <class T>
max3<T>::max3(T x,T y,T z):a(x),b(y),c(z){}
这句的前面的template <class T>就是说现在定义的类里面存在模板元素,而为了通过抽象的类模板产生“实体类”,必须在类模板的名称之后加<type>(type在这个例子里就是T)。按语法定义就要写上。
这样大概你又会问第二个max3后面怎么就不加<T >了,因为它在::这个域运算符后面,这个符号后面所有都被视为在class定义域内。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-25
你知道实例化吗?

摹本并非真正的函数/类实例, 只有带入具体的类型才算是真正的可用代码

<T>的意思就说说,这个里面的T是你后来要用的时候传入的,传入int,T就当int用
传float就当float用

这就是模板的用法了
第2个回答  2011-04-27
max3是你定义的模板类吧,你的第二行(就是问题行)是不是构造函数
类模板成员函数的定义具有如下形式:
1.必须以关键字template 开头,后接模板形参表;
2.必须指出它是哪个类的成员;
3.类名必须包含模板形参。
所以2要求max3,即指出构造函数属于哪个类,3要求在类名后紧跟模板形参即<T>.
不知讲明白没
第3个回答  2011-04-25
类模板中我们把max3<T>称之为类名。T为类型。多为修饰类中的参数。
相似回答