类模板及派生

类模板及派生

(一)

模板主要有两大类:即函数模板和类模板。这里主要讲一下对类模板的理解。

模板书面上讲就是一种对类型进行参数化的工具,那么类模板就是对“类”这种类型进行参数化的工具(也可以理解为一种类的轮廓,不限制类里面参数的类型)。再打一个通俗的比方:假设类就是月饼,而类模板就是生产月饼的机器,当然月饼有很多种类,比如长的,方的,(等价于数据类型或者类中成员函数返回值类型就是整型、浮点型之类),我现在不知道机器能生产什么形状的月饼,只知道它能生产月饼。

 

类模板的定义

 template <class T> class fun

{

};

template 是模板的关键字,后面括号里面的class 是类名,T表示模板参数(形参),括号内表明T是一个类型,后面表示定义了一个名为fun的类模型。

 

注意:类模板不是一个类,不能直接用于生成对象,所以fun  f  是错误的。

 

要想用fun这个类生成对象,首先要指明它的类型,例如:fun<double>,fun<int>等等。也就是类模板的实例化,成为模板类(太绕了,可以忽略模板类定义,只要知道类模板以及怎么定义对象就好了)。

所以定义类模板的对象如下:

fun < int>  a;

fun <float>  b;

 

(二)

类模板的派生类可以是模板,也可以说非模板。这时,派生类模板的参数表中应包含基类模板的参数。

template <typename T>

class Base

{

 

};

 

template <typename T>

class D2: public Base<T>     D2是派生类,也是一个模板,指出它的基类时,要缀上模板参数

{

};

 

在派生非类模板时,其基类一定是实例化之后的类,如下面的 base<int>

template  <class T>

class  base

{

……

};

class derive: public  base<int>      这边的类型T 已经实例化成了int  所以derive可以看成是派生的类,而不是模板

{

……

};

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值