【C++】类模板(template)作用对比举例
来源:互联网 发布:ye2系列电机绕组数据 编辑:程序博客网 时间:2024/05/17 03:18
一、类模板(template)
类模板是后期C++加入的一种可以大大提高编程效率的方法
关键字template
用法:
template <模板参数表> ----->模板参数表一般格式为class (标识符)
class (类名)
{
//....
}
二、举个栗子
我们要写一个比较类,类里面有两个私有成员
在类里有求私有成员中的最大值和最小值的两个公有成员
用来判断两个数的大小
下面我们来进行有无类模板的比较
(1)不用类模板
代码块:
class Compare{public:Compare(int a,int b)//构造函数,用于初始化{x = a;y = b;}int max()//求较大值{return (x>y)?x:y;}int min()//求较小值{return (x<y)?x:y;}private:int x;int y;};
分析:
我们会发现,这个类只能用于比较整形的大小
比如3,5;调用max返回5,调用min返回3
但是如果比较的是浮点数,那就不可以了
(2)用类模板
代码块:
template <class Type>class compare{public:compare(Type a,Type b){x = a;y = b;}Type max(){return (x>y)?x:y;}Type min(){return (x<y)?x:y;}private:Type x;Type y;};
分析:
通过对比发现,这两块代码差别并不是很大,仅仅是增加了关键字
还有类型Type替换之前的整型int
在main函数定义时,就可以定义不同类型的对象了
main函数代码:
int main(void){compare<int> C1(3,5);cout<<"最大值:"<<C1.max()<<endl;cout<<"最小值:"<<C1.min()<<endl;compare<float> C2(3.5,3.6);cout<<"最大值:"<<C2.max()<<endl;cout<<"最小值:"<<C2.min()<<endl;compare<char> C3('a','d');cout<<"最大值:"<<C3.max()<<endl;cout<<"最小值:"<<C3.min()<<endl;return 0;}
运行结果:
三、如何写一个将一个类转化为类模板
(1)写出一个类
(2)将类型需要改变的地方进行替换(如上面的Type)
(3)在类的前面加入关键字template以及函数参数表
(4)定义对象的格式 类名+<Type>+ xx(参数)
比如上面的compare<int> C1(3,5);
(5)切记,模板函数如果定义在类体外,需要在前面加上一行template <函数参数表>。并在类模板名后面用尖括号加上<虚拟函数参数>
比如
template<class Type>
Type compare <Type>::max()
{
//.....
}
------->>>类模板之数组类的定义
1 0
- 【C++】类模板(template)作用对比举例
- C++template 模板类2
- C++,template,类模板和函数模板
- C++template ;模板学习
- C++template模板
- C/C++函数模板template
- C++ template - 类模板
- template 模板类
- c++ template 类模板
- C++类模板template
- 类模板-template
- C++模板类template
- template模板类使用
- 类模板Template
- C++类模板template
- template类模版的用法举例
- C++Template学习笔记之函数模板
- 函数模板 Function Template(C++Primer-10)
- SIFT--FPGA实现之降采样
- java多线程基础(5)-调度方式之暂停当前线程方式4-连接线程(join)
- EMW Tool Box 4.1 更改域名和端口讲解
- scrollView加约束
- ubuntu环境初试reactnative
- 【C++】类模板(template)作用对比举例
- Linux开发工具(gcc gdb make shell)——动态库和静态库比较
- Android数据存储SQLite数据库存储
- 【2038】四位16进制数转化为10进制
- jetty9在linux中的使用
- android http://dl-ssl.google.com/android/eclipse/访问不了
- 欢迎使用CSDN-markdown编辑器
- SpringMVC关于json、xml自动转换的原理研究[附带源码分析]
- Token验证