C++ 类模板和模板类

来源:互联网 发布:python 实现卷积 编辑:程序博客网 时间:2024/06/06 22:35

类模板的意义和函数模板的意义是一样的。

类模板的定义

template <class T> //声明一个模板,虚拟类型名为T。注意:这里没有分号。class Compare //类模板名为Compare{public :   Compare(T a,T b)   {      x=a;y=b;   }   T max( )   {      return (x>y)?x:y;   }   T min( )   {      return (x<y)?x:y;   }private :   T x,y;};

与普通类定义相比,类模板有两处不同:
1) 声明类模板时要增加一行
template <class 类型参数名>
template意思是“模板”,是声明类模板时必须写的关键字。在template后面的尖括号内的内容为模板的参数表列,关键字class(也可以用typename)表示其后面的是类型参数。
2) 固定的类型名换成虚拟类型参数名T。
在建立类对象时,如果将实际类型指定为int型,编译系统就会用int取代所有的T,如果指定为float型,就用float取代所有的T。这样就能实现“一类多用”。


在类模板外定义函数,不能用一般定义类成员函数的形式:

T Compare::max( ) {…} //不能这样定义类模板中的成员函数
应当写成类模板的形式
template <class T>TCompare<T>::max( ){     return (x > y)? x : y;}

类模板的实例化

Compare <int> cmp(4, 7);Compare <float> cmp(4.0, 7.0);


类模板的几点说明

1) 类模板的类型参数可以有一个或多个,每个类型前面都必须加class,如:
template <class T1,class T2>class someclass{    ...};
在定义对象时分别代入实际的类型名,如:
someclass<int, double> obj;
2) 和使用类一样,使用类模板时要注意其作用域,只能在其有效作用域内用它定义对象。
3) 模板可以有层次,一个类模板可以作为基类,派生出派生模板类。有关这方面的知识实际应用较少,本教程暂不作介绍,感兴趣的同学可以自行学习。











1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我的网银账户里的钱被盗了怎么办 老赖跑到国外去了还换了国籍怎么办 内裤把屁股两边磨得又肿又疼怎么办 京东在面临供货商不供货时怎么办的 打错的消息想撤回但按了删除怎么办 顺丰快递寄的黄皮和荔枝坏了怎么办 我发快递写错地址备签收不还怎么办 新买的床上四件套用着全身痒怎么办 华为畅玩6x锁屏密码忘了怎么办 我在淘宝上买了货不发货咋怎么办 在快递公司寄的东西丢了我该怎么办 不小心给了快递员子一个差评怎么办 不小心用发霉了的杯子喝了水怎么办 唐三复活了小舞失去的魂环怎么办了 我该怎么办?身陷动漫城输了很多钱 庄家开2球大小球踢成2球怎么办 去哪儿网订机票时邮箱写错了怎么办 在南航航班上把手机丢飞机上怎么办 买了品牌鞋穿了一周就破了怎么办 狗让狠狠的打了一顿不理人了怎么办 调好米粉宝宝吃的时候就凉了怎么办 情人间闹分手删了微信后悔了怎么办 8个月宝宝不坐椅子一直要抱怎么办 2个月婴儿3天没有拉大便了怎么办 8个月的宝宝不吃米糊和稀饭怎么办 2岁零5个月的宝宝不说话怎么办 两岁宝宝不拔掉老是拉在裤上怎么办 一岁的宝宝吞了一颗五子棋该怎么办 别人欠我钱还把我拉黑我该怎么办 欠我钱的人耍赖不还我该怎么办 交易猫买的炉石传说号被找回怎么办 淘宝上卖水果过季了不想下架怎么办 两岁宝宝被蚊子咬了挠破流水怎么办 我打了人一拳他就躺地下了怎么办 在微信上被认识的人骗了钱该怎么办 微信上面被不认识的人骗了钱怎么办 柜体和订做的柜门颜色对不上怎么办 拉鞭炮的车压了我的电车不陪怎么办 脚爱出汗穿高跟凉鞋总往前滑怎么办 视频的格式是VⅠD打开很慢怎么办 汕头普法学法我点了考试没考怎么办