c++中模板分为两类(1分钟理清楚C++类模板和模板类区别)
1 、定义区别
类模板和模板类主要关注点是后一个单词 。
类模板:主要描述的是模板 ,这个模板是类的模板 。可以理解为一个通用的类 ,这个类中的数据成员 ,成员函数的形参类型以及成员函数的返回值类型不用具体的指定 ,这些类型都是虚拟的 。在使用类模板进行对象定义的时候 ,才会根据对象的实际参数类型来替代类模板中的虚拟类型 。通俗一点来说 ,可以看作是做蛋糕的模具 。类模板标准定义格式如下:
或者:
(1)template:这是声明类模板的关键字 ,表明这是一个类模板 。
(2)尖括号<>中 ,typename和class的作用都一样 ,都是用作来申明后面的参数是一个虚拟的数据参数类型 。
(3)类型参数:用C++标识符:Type或者T来表示 ,表示这是一个虚拟的数据类型名 ,此时在类模板中不给定具体的数据类型 ,实例化成模板类后,就需要给定具体的数据类型 。
模板类:主要描述的是类 ,这个类使用类模板进行声明 。将类模板中的虚拟类型参数指定成一个具体的数据类型参数 。通俗一点来说可以看作是通过蛋糕模具做出来的蛋糕 。
2 、程序举例
1 ,定义一个比较两个元素大小的类模板;
2,使用该类模板进行实例化 ,实现用模板类定义对象 。
最终程序打印结果依次为:
可以从程序举例中看出使用类模板Compare进行实例化 ,生成了3个类型分别为Compare<int> 、Compare<float> 、Compare<char>的模板类 ,这3个模板类经实例化后又生成了3个对象成员fun1 、fun2 、fun3。对象成员可以调用类模板中定义的成员函数max() 。类模板表示了通用的类 ,模板类表示了经过实例化后带具体数据类型参数的类 。
另外 ,在类模板中 ,类模板的成员函数是在类模板体内定义。而类模板中的成员函数也可以在类模板体外定义 。那么就需要遵循以下规则:
(1)需要在成员函数定义之前进行模板声明;
(2)在成员函数名前加上"类名<类型参数>::";
之前的程序举例中main函数之前的类模板声明就要改为如下格式:
更多技术内容和书籍资料获取敬请关注微信公众号“明解嵌入式 ”
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!