c++中类模板与模板类的总结

类模板,实际上是建立一个通用类,其数据成员,成员函数的返回类型和形参类型不具体指定,用一个虚拟的类型来代表。使用类模板定义对象时,系统会根据实参的类型来取代模板中虚拟类型从而实现了不同类的功能。
template<typename 参数类型>
class 类名
{
类成员声明
};

template<class 参数类型>
class 类名
{
类成员声明
}
与函数模板类似,template只是一个声明模板的关键字,它表明声明一个模板。类型参数实际上时一个虚拟的类型名,现在并未指定他是哪一种具体的类型,但使用类模板时,必须将类型参数实例化。虽然template<class 参数类型>与template<typename 参数类型>作用一致但是建议使用template<typename 参数类型> class容易和类混淆。
举例:

template<typename T>
class Max
{
private:
 T x;
 T y;
public:
 Max(T a, T b)
 {
  x = a;
  y = b;
 }
 T Min();
 void Show()
 {
  cout << x << '\t' << y<<endl;
 }
};
template<typename T>
T Max<T>::Min()
{
 return x < y ? x : y;
}
int main()
{
 Max <int>Num1(1, 2);
 Max <double>Num2(1.1,2.2);
 Num2.Min();
 Num1.Show();
 Num2.Show();
 return 0;
}

在创建对象之后可以将类模板理解为如下


class Max<int>
{
typedef int T
private:
 T x;
 T y;
public:
 Max(T a, T b)
 {
  x = a;
  y = b;
 }
 T Min();
 void Show()
 {
  cout << x << '\t' << y<<endl;
 }
};


有几个细节需要注意一下
1用类模板定义对象时采用一下形式:
类模板名<实际类型名>对象名[(实参列表)];
2.类模板中成员函数在在类模板体外定义,但成员函数中类型参数存在则有一下规定
( 1) 需要在成员函数定义之前进行模板声明
(2)在成员函数名前写上“类名<类型参数>::”
3.在每个类模板定义之前都需要在前面加上模板声明
4.模板类同模板函数一样也可以有多个类型参数

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值