归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
欢迎各位→点赞 + 收藏⭐ + 留言
勤奋,机会,乐观是成功的三要素!
一起加油!
目录
编辑
一、类模板的定义和使用:
例如,声明两个类,分别用来比较整数和浮点数的大小。
说明:
例:编写一个类模板,比较两个整数、浮点数和字符数据的大小。
说明:
二、总结:
三、共勉:
昨天介绍了函数模板,建立了一个通用函数,将很多个处理不同数据类型、相同逻辑功能的函数抽象成一个统一的函数,用来简化程序设计。对于类的声明,也存在同样的问题。如几个类的逻辑功能相同,但数据类型不同,却要重复性的写很多代码。
class Compare_int{
private:
int x,y;
public:
Compare_int(int a,int b)
{
x=a;
y=b;
}
int max(int a,int b)
{
return a>b?a:b
}
int min(int a,int b)
{
return ab?a:b;
}
float min(float a,float b)
{
return a
这两个类的声明的类型不同,但逻辑功能非常相似,有很强的重复性。我们可以运用函数横板的思路,为类也声明一个通用的类模板,使得实例化类中的某些数据成员、某些成员函数的参数或者返回值,能取任意的数据类型。
类模板的一般定义格式如下:
template
class 类名
{
};
- (1)template是定义类模板的关键字,总是放在模板定义和声明的最前面。
- (2)
必须用尖括号<>括起来,其中T为类型参数,它实际上是一个虚拟的类型名 ,当使用类模板时,T被替换为某种实际的数据类型(例如int,char,float 等)从而实现类多用。T也可以用其他合法的标识符替换。- (3)类的定义方式与之前讲到的类的定义类似。
- (4)类模板是对一组类的抽象,某一个类是对类模板的实例化。
在声明了一个类模板后,如何使用它,如何使它变成一个实际的类,又如何生成一个具体的对象?
一般形式为:
类模板名<实际类型名> 对象名(参数表);
下面通过具体的例子说明类模板的定义和使用方法.
#include
using namespace std;
template
class Compare{
private:
T x,y;
public:
Compare(T a,T b)
{
x=a;
y=b;
}
T max();
T min();
};
template
T Compare::max()
{
return x>y?x:y;
}
template
T Compare::min()
{
return x cmpi(4,9);
cout<<"两个整数的最大值:"< cmpf(3.93,7.78);
cout<<"两个小数的最大值:"< cmpc('k','q');
cout<<"两个字符的最大值:"<
该程序定义了一个类模板 Compare
,其模板类型参数为 T。在该类模板中,构造函数的两个形参 a、b,两个私有的数据成员 x、y,以及两个成员函数 max()和 min()的返回类型,都是用模版类型参数T声明的变量。
该程序的主函数中生成了三个模板类,并生成了三个对象,其语句分别为:Compare
(1)声明类模板时,要在类的前面加一行语句:
template
(2)用类模板定义对象时用以下形式:
类模板名<实际类型名> 对象名;
类模板名<实际类型名> 对象名(参数表);
(3)如果在类模板外定义成员函数,应写成类模板形式 :
template
函数类型类模板名<虚拟类型参数>::成员函数名(函数形参表){......}
以上就是我对C++模板——(3)类模板的理解,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C++模板的理解,请持续关注我哦!!!